Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Locate en Consultas Cortas (https://www.clubdelphi.com/foros/showthread.php?t=14460)

AGAG4 21-09-2004 17:09:25

Locate en Consultas Cortas
 
Tengo un Maestro-Detalle(Facturas), y quiero que en el Detalle cada vez que se capture el Código del Producto me busque si este mismo Código de Producto se encuentra capturado en el mismo "Detalle" de la Factura Activa, estoy usando los IBX 7.08 con FireBird 1.50, el Detalle lo tengo relacionado con el Maestro, y en el Dataset intento buscarlo con un Locate, pero me causa problemas con el Puntero del ibDataset el código es este:
Código:

if dmFactBabatsa.tDFacturas.RecordCount>0 then
 if dmFactBabatsa.tDFacturas.Locate('CLAVEART',dmFactBabatsa.tDFacturasCLAVEART.
 value,[locaseinsensitive, lopartialkey]) then begin
 MensajesW('No se debe de Repetir el Mismo Producto en la Factura','Atención',48);
 Abort;
 end;

Lo puse en el evento OnColExit del dbGrid, en el OnValidate del Campo Código del Producto pero el Puntero se me pierde del ibDataset y no encuentra el Producto, que lo que causa esto es que entra al evento OnBeforePost del ibDataset. Espero me haya explicado. De antamano Gracias por sus comentarios.

marto 21-09-2004 17:13:43

Wop!

El problema es que estas usando el mismo dataset para la edición y para la búsqueda. Cuando haces el locate, se cambia el registro activo y se provoca un post (como si hicieses un Next). Creo que la mejor solución es que te crees una query que te busque si existe el código de producto, de este modo dejaras el dataset detalle en edición sin problemas.

Ah! otra cosa, es mejor que uses el tag [delphi] enlugar de [code] si lo que pones es código Delphi ;)

mamcx 21-09-2004 17:58:56

Prueba con LookUp (o algo asi). Busca pero NO mueve el puntero. Si no lo soporta el dataset, puedes usar Bookmarks o clonar el dataset

AGAG4 21-09-2004 20:26:56

oki
 
Muchas Gracias por sus Respuestas, pero como se usan los Bookmarks o clonar el dataset????, ya había pensado en los Query's, pero ando investigando si se puede de otra forma que no sea agregar otro dataset ó query.

De antemano Gracias.

mamcx 21-09-2004 20:31:05

Busca en las ayudas con Bookmarks. Tambien el Lookup que es la mas facil. Clonar dataset es algo que tienen algunos como TClientDataSet o TAdo....

AGAG4 21-09-2004 20:32:03

oki
 
Ok Gracias.

AGAG4 21-09-2004 21:03:32

oki
 
No me funciono con los Bookmark como lo implementarias con los lookup????

marcoszorrilla 21-09-2004 22:09:52

Los BookMarks no te sirven porque el problema es que al mover el puntero para buscar provocas el Post, tienes que hacer lo que te ha dicho Marto o Mamcx.

O utilizas un segundo Ttable para buscar.
O utilizas SQL
Y otra opción este campo lo colocas en un control no Dbaware, por ejemplo un Edit y en on Exit del mismo lanzas la búsqueda.

Un Saludo.

AGAG4 21-09-2004 22:22:38

oki
 
Me voy por la segunda, porque no se como se usan los controles "no Dbaware",
Son más rápidos estos controles que los Query's????
De antemano Muchas Gracias.

AGAG4 22-09-2004 03:03:34

????
 
Esta duda ya la hice arriba, pero aqui va mejor planteada, tengo el Maestro- Detalle, en donde quiero implementar la "Busqueda Corta" es en el Detalle, aqui tengo aproximadamente unos 1,450,000 Registros en la Tabla(Detalle) de la Base de Datos, si elijo con un QUERY no será bastante pesado para buscar si esta repetido el Articulo la busqueda la hago dependiendo de la llave primaria BODEGA+SERIE+FOLIO????

ó como se podría hacer un CLON del ibDataset(Detalle) por medio de código????

Accesan aproximadamente 30 Usuarios a la vez, no he hecho la prueba, pero quiero ver opiniones, de antemano Gracias.


La franja horaria es GMT +2. Ahora son las 11:27:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi