PDA

Ver la Versión Completa : DBLookupComboBox enfadoso !


Dr.Bizarre
11-05-2006, 12:54:06
Una manita por aca...

Lo que uso: Delphi 7 , MYSQL 5 , MyDAC

Lo que tengo:

MyQuery1.SQL.Text := '
SELECT * FROM marcas
';
MyQuery1.Active:=True;
DataSource1.DataSet:=MyQuery1;
DBLookupComboBox1.ListSource:=DataSource1;
DBLookupComboBox1.ListField:='nombre_marca';
DBLookupComboBox1.KeyField:='id_marca';

MyQuery2.SQL.Text := '
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


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
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:
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

DBLookupComboBox1.KeyValue

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

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 !