Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   DBLookupComboBox enfadoso ! (https://www.clubdelphi.com/foros/showthread.php?t=31570)

Dr.Bizarre 11-05-2006 12:54:06

DBLookupComboBox enfadoso !
 
Una manita por aca...

Lo que uso: Delphi 7 , MYSQL 5 , MyDAC

Lo que tengo:
Código Delphi [-]
     
 MyQuery1.SQL.Text := '
                                 
'>
Código SQL [-]
 '>SELECT * '>FROM marcas
'
; MyQuery1.Active:=True; DataSource1.DataSet:=MyQuery1; DBLookupComboBox1.ListSource:=DataSource1; DBLookupComboBox1.ListField:='nombre_marca'; DBLookupComboBox1.KeyField:='id_marca'; MyQuery2.SQL.Text := '
'>
Código SQL [-]
 '>SELECT * '>FROM lineas '>WHERE id_marca =
????? '
; MyQuery2.Active:=True; DataSource2.DataSet:=MyQuery2; DBLookupComboBox2.DataSource:=DataSource1; DBLookupComboBox2.DataField:='id_marca'; DBLookupComboBox2.ListSource:=DataSource2; DBLookupComboBox2.ListField:='nombre_linea'; DBLookupComboBox2.KeyField:='id_linea';

Lo que que quiero: En el DBLookupComboBox2 mostrar aquellos registros que pertenezcan a la id_marca recogida en MyQuery1

La pregunta es: como atrapo id_marca de MyQuery1 para posteriormente decirle a MyQuery2 lo que quiero

PD. Perdonando si es algo trivial, pero siendo las 3:52 am....ustedes me entederan.
PD2. Apreciaria su ayuda
PD3. Las estructuras de las tablas:
> Marcas
>id_marca
>nombre_marca

>Lineas
>id_marca
>id_linea
>nombre_linea

waltergomez 11-05-2006 17:35:10

Dado que las lineas no deben ser muchas podes hacer un

Código SQL [-]
select * from lineas;

en el OnCreate del form, o donde sea.

y luego filtra el Query2 por el valor de la marca del Query1 en los eventos apropiados,
Si solo mostras datos bastaria con el AfterScroll de Query1
Si editas, insertas y eliminas deberias usar el OnExit del Combo y posiblemente AfterPost, AfterCancel y AfterDelete.

Saludos,

Dr.Bizarre 15-05-2006 10:41:57

Cita:

y luego filtra el Query2 por el valor de la marca del Query1 en los eventos apropiados,
precisamente esa era mi pregunta, como demonios filtraba en MyQuery2 con un valorsillo de MyQuery1, pues fue muy sencillo <-- no sin antes muchos F1's

dije:
Cita:

La pregunta es: como atrapo id_marca de MyQuery1 para posteriormente decirle a MyQuery2 lo que quiero
bueno pues, la propiedad KeyValue del DBLookupcombobox es quien atrapa en valor de lo seleccionado en el combo

Código Delphi [-]
DBLookupComboBox1.KeyValue

y ahora que hago con ese valor, en este caso una FK, usando macros..

Código Delphi [-]
MyQuery2.SQL.Text := 'SELECT * FROM lineas WHERE id_marca=&marca';
 MyQuery2.MacroByName('marca').Value :=b ;

notese que la variable 'b' es quien tiene el KeyValue

listo y claro !


La franja horaria es GMT +2. Ahora son las 14:06:25.

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