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 continuo (https://www.clubdelphi.com/foros/showthread.php?t=64904)

voldemmor 09-11-2009 22:14:54

locate continuo
 
Hola amigos.os agradesco de antemano por su ayuda.

Tengo un sistemilla necesito buscar en un dataset un nombre,
para lo cual uso
Código Delphi [-]
LOCATE('nombre',edit1.text,[partialkey])

pero eso me arroja al registro con la primera coincidencia y lo activa, pues claro como lo especifican en la ayudita de delphi.

pero he tratado de hacer que esto se me vaya mivilizando en los registros que conincidan con la cadena y la verdad no lo logro.

He tratado de usar filtros, como lo indica en DSofD4 pero la verdad he fracasado.

Uso zconnection.
una Ztable enlazada a mi base de datos (mysql 5)
un Data source
un dbgrid.

por favor espero me pois ayudar

Ñuño Martínez 10-11-2009 09:19:05

Si no me equivoco, quieres obtener todos los registros en los que coincida el campo nombre, ¿no es así?

Bueno, en el peor de los casos puedes usar directamente de SQL, que en tu caso sería "SELECT * FROM tabla WHERE nombre='edit1.text'". La forma de implementación ya depende del componente que utilices. Puedes construir la petición almacenándola en un STRING y luego llamar a la propiedad SQL (en el caso de TSQLQuery) o crear una petición con parámetros, pero esta forma no recuerdo cómo se hace.

Si estás utilizando controles de "Data Controls", pues no tienes que hacer más.

No puedo ayudarte mucho más porque hace bastante que no utilizo bases de datos con Pascal.

voldemmor 10-11-2009 15:02:22

gracias
 
Gracias por el interes Ñuño, el problema con lo que propones es que al tratarse de pocos registros, apenas 600 los enlace directamente a una Ztable, y se muestra directamente el contenido completo de mi tabla.

Lo que deseo es realizar una busqueda que me recorra los registros hasta que el usuario encuentre el correcto y lo utilice.

de todas maneras gracias por tu interes

look 10-11-2009 15:29:09

Cita:

Empezado por voldemmor (Mensaje 346091)
Gracias por el interes Ñuño, el problema con lo que propones es que al tratarse de pocos registros, apenas 600 los enlace directamente a una Ztable, y se muestra directamente el contenido completo de mi tabla.

Lo que deseo es realizar una busqueda que me recorra los registros hasta que el usuario encuentre el correcto y lo utilice.

de todas maneras gracias por tu interes

¿muestras el contenido en un grid?, ¿es como una busqueda incremental?, bueno si es asi, puedes utilizar el componente de las JEDI , el JVdbFindEdit
es muy bueno , lo recomiendo...


fidel 10-11-2009 19:18:51

Si solo son 600 registros hasta puedes recorrer la tabla de principio a fin con un bucle While, parar cuando cumpla la condición que quieras y dar al usuario la opción de seguir buscando o terminar la búsqueda.

600 se recorren en "ná" que es todavía menos que "nada".

voldemmor 14-11-2009 20:35:56

ok
 
Gracias por sus comentarios.
Voy a probar la opcion del while hasta mientras a ver como me va.
Vo a buscar las jedi.

PD: pido disculpas aca en ecuador estamos con apagones y no he podido acceder a la red.

Malau 23-11-2009 03:00:34

Hola Voldemmor!
Buscando soluciones me encontré con tu post… Mi idea era hacer algo similar a lo que te muestra Look en la imagen, mostrando la consulta en un DBGrid y lo solucioné así:

Código:

IBQuery.SQL.Clear;
  IBQuery.SQL.Add('select * from ‘tabla’ where ‘campo’ starting with '+IntToStr (Edit1.Text)+’  ‘);
  IBQuery.Close;

Este código va en el evento OnChange del Edit1. Espero que te sirva, saludos…

voldemmor 23-11-2009 15:05:52

gracias malau
 
Gracias por la colaboracion malau.

El problema esta en que no estoy usando querys de ningun tipo. Se trata de una zTable enlazada directamente a la DB.

Gracias de todas maneras

sisne 04-04-2010 23:27:51

Cita:

Empezado por look (Mensaje 346096)
¿muestras el contenido en un grid?, ¿es como una busqueda incremental?, bueno si es asi, puedes utilizar el componente de las JEDI , el JVdbFindEdit
es muy bueno , lo recomiendo...


Hola vi este msj muy interesante. Por favor alguien podria decirme como puede ser el codigo? algun ejemplo?
En mi caso tengo tablas: Tuniversitario, Tmateria, Tbeca y quiero realizar igual las busquedas como muestran en este ejemplo.

Podrian darme algun ejemplo?
Gracias

vinicc 06-04-2010 00:52:19

Hola sisne, he aquí una forma de cómo hacerlo:
1.- un Tedit para el dato a buscar
2.- un grid para mostrar los datos (tal como se muestra en la gráfica ya publicada)

2.- en el evento OnChange del Tedit:

procedure TFndFrm.Edit1Change(Sender: TObject);
begin
Productos.Locate('Nombre',Edit1.Text,[loPartialKey]);
end;

Espero que esto sea lo que esperabas.:D

sisne 06-04-2010 01:07:32

Holaasss

Alguien tiene conocimiento sobre ese funcionamiento? :o

Necesito ese tipo de busqueda por favor...

Casimiro Notevi 06-04-2010 01:33:52

¿Y qué más quiéres que te digan?, te han dicho el componente, el evento donde poner el código y el código que debes poner... :confused:

sisne 06-04-2010 01:52:03

Hola vinicc
Gracias por el codigo :), exactamente el locate te lo busca directamente, pero no te lo muestra los posibles que cumplan en este caso con la busqueda que se coloca en el Tedit, es decir va reduciendose a medida que encuentra en el DBGrid.

Gracias de todas maneras eso ya lo use:p:o

Malau 06-04-2010 17:07:04

Sisne! para filtrar la información de acuerdo al caracter ingresado en el Edit lo que puedes hacer es cambiar la propiedad active luego de la consulta:

Código:

DataSet.Active:=False;
DataSet.Active:=True;

Suerte!

sisne 06-04-2010 17:56:45

Hola!
Gracias por la ayuda.

sisne 06-04-2010 17:59:05

Hola Malau!
Gracias por la ayuda.


La franja horaria es GMT +2. Ahora son las 15:16:44.

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