Ayuda con filtros

china_yo25
29 de Octubre del 2003
no se como utilizar los filtros en Deplhi necesito mostras los tatos de unas tablas en los DBComboBox .
un ejemplo: de la tabla pais al seleccionar digamos mexico me deben aparecer todos sus estados y si selecciono un estado(guadalajara), me debe mostrar todos los municipios de guadalajara , y asi hasta legar la localidad para esto tengo cuatro DBCombBox


mfercor
29 de Octubre del 2003
Para poder contestarte necesito saber sobre que tipo de base de datos trabajas (Access, dbf, sql, mysql...) y
que api usas (BDE, ADO, MySQL...) para asi darte una solución. Yo personalmente no utilizo los TDBComboBox, utilizo los TComboBox que será lo que más fácil te resulte de hacer, ya que los filtros para cuatro TDBComboBox se basan en los parámetros de un TQuery que no son nada sencillos de utilizar y ademas mas lentos. Lo que necesito saber a parte de los datos anteriores es la estructura de la base de datos. Un saludote ;)

china_yo25
29 de Octubre del 2003
estoy utilizando un DBE y sql
te muestro una fomra de como creo yo le estoy dando solucion a el problea que tenia
acve_pais:=DBCpais.ItemIndex;//almacenando en una variable el Indice
acve_pais:=acve_pais+1;// contador suamndole +1
str(acve_pais,p);// asignadole el vlaor a p tipo string
Tbestado.filter:='cve_pais ='+p;
Tbestado.filtered:=true;
DBCestado.clear;
while not Tbestado.Eof do
begin
DBCestado.Items.Add(Tbestado.FieldByName('estado').AsString);
Tbestado.Next;
end;
no se si sea la forma correcta pero me esta funcionando tu que opinas

mfercor
29 de Octubre del 2003
Yo lo veo correcto, es una de las bastantes formas que existen de filtrar comboboxes, l unico que cambiaria yo de ese codigo es en vez de:

acve_pais:=acve_pais+1;

pondría

inc(acve_pais);

o si no directamente

acve_pais:=DBCpais.ItemIndex+1;

Es solo porque soy un poco quisquilloso jeje :P si quieres restarle -1 usa la funcion "dec()"