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

David 08-07-2006 18:15:05

DBLookupComboBox con paradox
 
Hola

tengo una tabla llamada Nominas y otra llamada ConceptoNominas , en la tabla concepto Nominas hay dos campos , Código y Concepto (string).

En la tabla Nomina , hay un campo Codconcepto que es Integer . Y mediante un campo de lookup que he creado llamado strConcepto (string), busco el campo de texto de la tabla ConceptoNominas .

Lo que quiero hacer es tener un DBLookupComboBox , con los conceptos de la tabla nomina , por ejemplo Julio , Agosto , etc ... y cuando cambie de registro se muestren todos los datos , en un dbGrid que tengo debajo , filtrando según el concepto que haya en ese momento en el DBLookupComboBox .

¿Cómo se hace esto ?

marcoszorrilla 08-07-2006 18:32:48

Pues filtrando por el concetpo elegido en el DbLookUpComboBox, o simplemente filtrando por la tabla origen de los datos del DbLookUpCombox, pues al hacer una selección mediante este componente se mueve el componente en la fuente de datos apuntando a aquél.
Código Delphi [-]
MiTabla.Filter:=QuotedStr(Tabla_que_Apunta_DblkCampoxxx.Value);

//o

MiTabla.Filter:=QuotedStr(Dblk1.Text);

MiTabla.Filtered:=True;

Un Saludo.

David 08-07-2006 19:13:01

Me he hecho un pequeño ejemplo , pero no me llega a salir .

He puesto dos tablas con sus datasources . He creado en una el campo de lookup .

He puesto un Query con su datasource , y en el SQL del Query he escrito lo siguiente :

select distinct(concepto) from nominas // concepto es integer claro esta .

Luego pongo el DBGrid con el datasource de la tabla . Pongo el DBLookupCombobox , con el datasource ,también de la tabla , el mismo que el DBGrid .

y en la propiedad DataChange del datasource del Query escribo lo siguiente :

Código Delphi [-]
procedure TForm1.dsqueryDataChange(Sender: TObject; Field: TField);
begin
    nomina.Filter:= 'concepto = ''' +  IntToStr(Query1.FieldByName('concepto').AsInteger) + '''';
    nomina.Filtered := True; // nomina es el nombre de la tabla
end;

end.

El caso es que me sale filtrado , pero el DBlookupcomobox , no me permite mover entre registros , es imposible cambiar de registros .

David 08-07-2006 19:19:51

Me contesto a mi mismo , por casualidad he encontrado la solución .

Todo consiste en poner la propiedad ReadOnly del DBLookupCombobox a False .:D

David 08-07-2006 19:46:31

Me he equivocado no me sale , cuando cambio en el DBlookupcombobox , lo unico que pasa en el grid es que se edita el campo que aparece en el combobox en ese momento .

Ahora si que estoy perdido .


La franja horaria es GMT +2. Ahora son las 22:25:24.

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