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)
-   -   problemas con locate (https://www.clubdelphi.com/foros/showthread.php?t=11258)

maui 09-06-2004 18:25:01

problemas con locate
 
hola comunidad

tengo el sigte problema:

tengo dos campos codigo(tedit) y nombre(tdbedit)

ingreso el codigo y no me muestra el nombre automaticamente.

estoy utilizando el sigte codigo:

Código Delphi [-]
procedure TFrmSolicitudVta.qryVentaOnChange(Sender: TObject);
begin
qryVenta.First;
qryVenta.Locate('IDEMPLEADO',Edit2.Text,[]);
qryVenta.next;
end;
¿como puedo mejorar el codigo?

espero sus valiosos comentarios....

de ante mano gracias

delphi.com.ar 09-06-2004 18:37:12

No se que es lo que quieres hacer, pero fíjate que una vez ubicado el registro, en el caso de que este exista, estas moviendo una posición el DataSet (qryVenta.next).

PD: Las etiquetas [delphi] llevan corchetes! ;)

maui 09-06-2004 18:42:47

gracias por contestar

lo que quiero hacer es ingresar un codigo en un tedit y luego aparesca automaticamente:

ej: codigo: 111 nombre(tdbedit): perico (este se despliege automatico).

como lo puedo hacer, me puedes enviar un codigo de ejemplo.

espero sus valiosos comentarios...

delphi.com.ar 09-06-2004 18:48:58

Podrías hacerlo de varias formas, o bien cuando el usuario presione alguna tecla en particular, por ejemplo ENTER como seña de confirmación de la búsqueda, o cuando el editor pierda el foco, o despues de N tiepo de producirce la última modificación.
La utilización del locate es simplemente como escribes en tu código.

Saludos!

__cadetill 09-06-2004 18:50:55

Pues tal y como lo haces, pero sin el Next

Y el First tampoco es necesario

Para el tipo de búsqueda, te recomiendo mires en la ayuda la función locate y revises el tercer parámetro de la función

EDIT: vaya, d.c.a se me adelantó :rolleyes:

eduarcol 09-06-2004 18:51:37

Mira tu problema es sencillo

1.- El evento donde estas programando la busqueda, debes programarla en el evento onExit del TEdit

2.- Como decia Delphi.com.ar el query.next esta demas

Suerte

delphi.com.ar 09-06-2004 18:53:53

Agrego algo que he olvidado: Tienes que tener en cuenta que el locate hace una búsqueda en los resultados del DataSet desde el lado del cliente, no del servidor. Si el set de resultados es algo grande, los Locates serán algo lentos y un DataSet demasiado grande puede reducir drásticamente los recursos del sistema. Lo recomendable para estos casos, es utilizar consultas Sql seleccionando únicamente los datos necesarios.

Saludos!

delphi.com.ar 09-06-2004 18:55:03

Cita:

Empezado por eduarcol
2.- Como decia Delphi.com.ar el query.next esta demas

Y como agregó cadetill... El query.Fist también (ese ni lo he visto :D)

maui 10-06-2004 18:36:06

hola eduarcol y amigos del foro

1.- El evento donde estas programando la busqueda, debes programarla en el evento onExit del TEdit

tengo el sigte codigo:

Código Delphi [-]
procedure TFrmSolicitudVta.qryVentaOnExit(Sender: TObject);
begin
if Edit2.Text <> '' then
qryVenta.Locate('IDEMPLEADO',Edit2.Text,[loCaseInsensitive,loPartialKey]);
end;

todavia tengo problemas no esta haciendo nada...

espero sus comentarios....

delphi.com.ar 10-06-2004 18:38:22

Tienes componentes elazados a este Query???

maui 10-06-2004 18:43:14

hola delphi.com.ar gracias pro contestar

Tienes componentes elazados a este Query???[/quote]

tengo un tquery enlazado a un datasourse

y la consulta que tengo es la sigte

SELECT IDCONCURRENTE, IDEMPLEADO, NOMBRE_EMPL, FECHA_VENTA, PIVA, TOTAL_VTA
FROM VENTA
WHERE ( IDCONCURRENTE = 0 );

espero tus comentarios

delphi.com.ar 10-06-2004 18:46:57

¿¿La consulta retorna datos??
¿¿El DataSource tiene elazado algún componente??
¿¿Cómo estas evaluando el no funcionamiento del Locate??

tcp_ip_es 10-06-2004 18:49:34

la consulta la tienes abierta??? tienes un dbgrid enlazado a la consulta para ver como se posiciona en el registro???



Saludos, Tony

eduarcol 10-06-2004 18:52:12

Cita:

Empezado por maui
Código Delphi [-]
procedure TFrmSolicitudVta.qryVentaOnExit(Sender: TObject);
begin
if Edit2.Text <> '' then
qryVenta.Locate('IDEMPLEADO',Edit2.Text,[loCaseInsensitive,loPartialKey]);
end;

Mira fijate que eso lo estas programando, en el evento Exit del query no del edit, colocalo en el evento on exit del TEDIT correspondiente

delphi.com.ar 10-06-2004 18:54:02

¡¡El Query no tiene OnExit!!...
Digamos que el nombre del método no tiene porqué ser extricto, la pregunta del millón es... ¿A qué evento de qué componente apunta este procedure?

roman 10-06-2004 18:55:56

Cita:

Empezado por eduarcol
Mira fijate que eso lo estas programando, en el evento Exit del query no del edit, colocalo en el evento on exit del TEDIT correspondiente

:eek: ¿¿¿El TQuery tiene evento OnExit???

:confused:

eduarcol 10-06-2004 19:00:02

Upsss, Perdon, di mal la respuesta, la respuesta correcta seria como el amigo Delphi.com.ar, pequeños detalles que se el escapan a uno

Perdon a todos

el_enigma1 10-06-2004 23:49:14

El mismo tema no recuerdo
 
En lugar de ir asi
Código Delphi [-]
procedure TFrmSolicitudVta.qryVentaOnExit(Sender: TObject);
begin
  if Edit2.Text <> '' then
    qryVenta.Locate('IDEMPLEADO',Edit2.Text,[loCaseInsensitive,loPartialKey]);
end;
deberia ir el evento change del edit
Código Delphi [-]
procedure TFrmSolicitudVta.EditChange(Sender: TObject);
begin
  if Edit2.Text <> '' then
    qryVenta.Locate('IDEMPLEADO',Edit2.Text,[loCaseInsensitive,loPartialKey]);
end;
Si IDEMPLEADO es numerico lo mas seguro es que no funciones correctamente el locatete lo digo por que de ahí vengo. Debes tener un datasource1 que en la propiedad dataset(si no me equivo pero data algo) tenga al qryVentay luego en el dbedit y en la propiedad datasource o dataset(disculpa pero se me olvida cual es el verdadero nombre ) pones datasource1 y en la propiedad field eliges el campo que deceas.

maui 15-06-2004 06:18:46

hola enigma1

hice todo lo que me dijiste en tu mensaje, el idempleado lo tengo como entero y no funciona...

que tipo de datos me puede servir...


espero tus comentarios.......

el_enigma1 19-06-2004 07:53:57

Cita:

Empezado por maui
hola enigma1

hice todo lo que me dijiste en tu mensaje, el idempleado lo tengo como entero y no funciona...

que tipo de datos me puede servir...


espero tus comentarios.......

Con tipo string(varchar, char, texto) funciona bien


La franja horaria es GMT +2. Ahora son las 01:51:57.

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