Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como filtrar un dblookupcombobox (https://www.clubdelphi.com/foros/showthread.php?t=39529)

ddd_ddd 23-01-2007 11:04:19

Como filtrar un dblookupcombobox
 
tengo la tabla alumno, que tiene 3 campos: clave (autoincremento), nombre (char[15]) y direccion(char[40]).

Escribo un nombre de un alumno en una maskedit1, y a un lado tengo un boton bitbtn1 que sirve para buscar en la tabla alumno, las direcciones de los alumnos que se llamen como yo puse en la maskedit1. Las direcciones las quiero en un dblookupcombobox. hasta el momento solo puedo hacer que me muestre todas las direcciones que tengo en la tabla.
en el dblookupcombobox, listsourse:=datasource1, listfield:=domicilio, keyfield:=clave.

ddd_ddd 23-01-2007 11:06:22

aclaracion
 
exactamente lo que quiero son las direcciones de los alumnos, pero no de todos los alumnos, solo de los que se llaman con el nombre que yo puse en la maskedit1

Lepe 23-01-2007 11:30:34

la propiedad ListSource puede apuntar a un TQuery, en dicha consulta puedes restringir los datos mediante la claúsula where.

Código Delphi [-]
query1.sql.text := 'select clave, domicilio from alumnos where nombre like ' + quotedstr('%'+maskedit1.text+'%');
query1.open;

Saludos

ddd_ddd 24-01-2007 07:36:02

sigo en blanco
 
como hago para que listsource apunte a un tquery? paso por paso porque soy lento
gracias

Lepe 24-01-2007 11:31:23

Supongo que estas usando el BDE (porque no dices otra cosa), pues en la paleta BDE de delphi tienes el TQuery, coloca uno en tu ventana.

- Asigna la propiedad Database o DatabaseName (una de las dos nada más)

- En su propiedad SQL escribe:
Código SQL [-]
select clave, domicilio from alumnos

- Añade un TDatasource a tu ventana, en su propiedad dataset elije el Query1. Su propiedad AutoEdit a false (ya que no se modificará los datos).

- En el lookupListBox, en su propiedad ListSource, elije el Datasource que acabas de añadir, modifica los camos keyfield, listfield a voluntad.

- Y ahora usa el código que puse en el botón que quieras. (he editado el mensaje para completarlo)

Saludos

ddd_ddd 25-01-2007 07:04:56

Perfecto
 
Funciona de maravilla, me salvaste la vida.
Una ultima pregunta, ahora ya me muestra solo los nombres que yo queria pero ahora como recupero la clave del alumno que escogió?
leí algo sobre las propiedades datasource y datafield del dblookupcombobox, pero la verdad no estan explicadas paso a paso, podrias decirme como se usan?:D
gracias

Lepe 25-01-2007 11:34:34

Si en la propiedad Keyfield has puesto el campo "clave" con la propiedad KeyValue obtienes el valor de ese campo, en el registro elegido.

También podrías acceder con query1.fieldbyname('clave').AsXXXXX ya que el registro activo será el que tengas elegido en el dblookup. Aunque normalmente se usa la primera opción.

Saludos

ddd_ddd 25-01-2007 20:42:47

Todo perfecto, muchas gracias, funciona excelente


La franja horaria es GMT +2. Ahora son las 19:02:56.

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