Ver Mensaje Individual
  #7  
Antiguo 13-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Rofocale.
Cita:
Hola estoy retomando el ejemplo de hace tiempo.. debido a que estuve ocupado trabajando
ahora lo he probado y no filtra el combobox sigue apareciendome todo en el segundo combobox
espero puedas ayudarme
Y tenés razón, no hacía el filtrado.

Cambié los nombres de los campos de las tablas anteriores, quedaron así:
TABLA CATEGORIAS
CCATEGORIA CHAR(1)
CNOMBRE VARCHAR(20)

TABLA UNIDADES
UCATEGORIA CHAR(1)
UNOMBRE VARCHAR(20)


En mi prueba usé estos datos:
TABLA CATEGORIAS
CAT - NOMB.
-----------------------
A - BEBIDAS
B - LICORES

TABLA UNIDADES
CAT - NOMB.
--------------------
A - GASEOSAS
A - JUGOS
B - VINOS
A - LICUADOS
B - LICORES
B - CHAMPAGNES
A - AGUA MINERAL
B - CERVEZAS


El código Delphi:
Código Delphi [-]
...
procedure TForm1.FiltrarComboBox;
begin
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('SELECT UNOMBRE FROM UNIDADES, CATEGORIAS');
  IBQuery1.SQL.Add('WHERE UCATEGORIA = CCATEGORIA AND UCATEGORIA =');
  IBQuery1.SQL.Add('(SELECT CCATEGORIA FROM CATEGORIAS WHERE CNOMBRE =:NOMB)');
  IBQuery1.ParamByName('NOMB').AsString:= cbCategorias.Text;
  IBQuery1.Open;
  cbUnidades.Clear;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('UNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM CATEGORIAS ORDER BY CNOMBRE';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbCategorias.Items.Add(IBQuery1.FieldByName('CNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbCategorias.ItemIndex:= 0;
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM UNIDADES ORDER BY UNOMBRE';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('UNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close;
  FiltrarComboBox
end;

procedure TForm1.cbCategoriasChange(Sender: TObject);
begin
  FiltrarComboBox;
end;

Al seleccionar la categoria en cbCategorias filtra el combo cbUnidades acorde a la categoría seleccionada.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-05-2011 a las 04:07:18.
Responder Con Cita