J'ai deux combobox (cbxType et cbxProd). J'ai dans le cbxType trois items que j'ai inseré: lundi, mardi, mercredi. Je voudrai bien que lors d'un clique sur un de ces items que le cbxProd affiche les données dudit item choisi dans cbxType. Mais ça devra venir de la colonne cbxProd de la table Firme.
Voici ce que j'ai fait:
cbxProd.Items.Clear;
case cbxType.ItemIndex of
0: begin
cbxProd.Clear;
Firme.Filter:='Type=' +quotedstr(cbxType.Text);
Firme.Filtered:= true;
cbxProd.Items.Add(FieldByName('prod').asstring;
cbxProd.Items.Clear;
case cbxType.ItemIndex of
0: begin
cbxProd.Clear;
Firme.Filter:='Type=' +quotedstr(cbxType.Text);
Firme.Filtered:= true;
try
while not Name_set_anex.Eof do
begin
cbxProd.Items.Add(Firme.FieldByName('prod').asstring);
cbxProd.Next;
end;
finally
firme.EnableControls;
Chez moi cbxType contient 1, 2, 3, ...
J'ai une table avec les champs RapId, RapLi, Libel
Je charge cbxProd avec le champ Libel filtre sur RapId
Le champ "RapId" est integer chez moi, mais avec tes quotesstr tu devrais t'en sortir.
Dans la procedure click de ton cbxType:
procedure TForm1.cbxTypeClick(Sender: TObject);
var vFilter:string;
begin
cbxProd.clear;
vFilter := 'RapId=' + cbxType.text; // chez toi quotedstr ...
table2.filter := vFilter;
table2.filtered := true;
table2.first;
while not table2.eof do
begin
cbxProd.items.add( table2.fieldbyname('Libl').asstring);
table2.next;
end;
end;
Avec ma table, çà marche. Mais c'est vraiment pas top, il y a bien mieux à faire, commence à utiliser les dbLookupCombobox directement sur le datasource de ta table.
Curieusement, j'ai ces mêmes codes que j'ai mis dans un Tbutton. ça marché quand. Je n'ai pas essayé le tien. Mais en lisant tes codes ça marcherait bien.
Code Delphi :
cbxProd.Items.Clear;
case cbxType.ItemIndex of
0: begin
cbxProd.Clear;
Firme.Filter:='Type=' +quotedstr(cbxType.Text);
Firme.Filtered:= true;
try
while not Name_set_anex.Eof do
begin
cbxProd.Items.Add(Firme.FieldByName('prod').asstring);
cbxProd.Next;
end;
finally
firme.EnableControls;