Bonne Anne a toutes & a tous ,
je me suis mis au base de donne et il y a un truck que je comprends pas.
description :
Access : j ai un fichier access contenant trois tables : Applications, Authors et Types. Qui ne sont pas liees car sinon l application bug.
Delphi : DBGrid, ADOconection et ADOQuery.
Le programme: l utilisateur peut visionner les trois tables en selectionnant l une d entre elle a partir une combobox. Lorsqu il a ppuie sur le bouton la DBGrid affiche la table selectionnee. l utilisateur peut aussi Filtrer ce qu il veut voir (le filtre s adapte a la table selectionnee). Or quand le filtre est utilise ca ne marche que sur une table ! Exemple : filtre sur la table Application ca marche. Mais filtre sur la table Authors me renvoit l erreur Impossible de retrouver les elements de la collection (Message en anglais : Item cannot be found in the collection corresponding to the request name or ordinnal)
L erreur n est pas lie a la table selectionne en effet le filtre ne marche que sur la premiere table sur laquelle on applique un filtre.
Un bout de code:
Code :
- procedure TForm1.Button1Click(Sender: TObject);
- var tblname : string;
- var I, NbColumns : integer;
- begin
- if ComboBox1.ItemIndex < 0 then Exit;
- tblname := ComboBox1.Items[ComboBox1.ItemIndex];
- ADOQuery1.Filtered := false;
- if ChkBx_Filter.Checked = true then begin
- ADOQuery1.Filtered := True;
- case ComboBox1.ItemIndex of
- 0 : ADOQuery1.Filter := 'Type = ' + QuotedStr(Edit_Params.Text);
- 1 : ADOQuery1.Filter := 'AuthorName = ' + QuotedStr(Edit_Params.Text);
- end;//case
- end//if
- else
- ADOQuery1.Filtered := false;
- with ADOQuery1 do begin
- Close;
- SQL.Text := 'SELECT * FROM ' + tblname;
- Open;
- end;
- NbColumns := DBGrid1.Columns.Count;
- for I := 0 to NbColumns-1 do begin
- DBGrid1.Columns.Items[I].Width := 100;
- end;
- end;
|
Code :
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- with Form1 do begin
- Height := 350;
- Width := 410;
- end;
- ADOConnection1.GetTableNames(ComboBox1.Items);
- ComboBox1.ItemIndex :=0;
- ChkBx_Filter.Checked := False;
- Edit_Params.Enabled := false;
- Static_params.Caption := 'Type :';
- end;
|
Appli creee a partir de ce lien chapitre 08
Merci a tous !
@->--
Message édité par KrzAramis le 07-01-2003 à 15:06:15
---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site