Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1612 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [resolu]ADO Access SQL : filtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]ADO Access SQL : filtre

n°280076
KrzAramis
Help Me
Posté le 06-01-2003 à 14:22:27  profilanswer
 

Bonne Anne a toutes & a tous  ,  :D  
je me suis mis au base de donne et il y a un truck que je comprends pas.   :pt1cable:  
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 :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var  tblname : string;
  3. var I, NbColumns : integer;
  4. begin
  5. if ComboBox1.ItemIndex < 0 then Exit;
  6. tblname := ComboBox1.Items[ComboBox1.ItemIndex];
  7. ADOQuery1.Filtered := false;
  8. if ChkBx_Filter.Checked = true then  begin
  9.   ADOQuery1.Filtered := True;
  10.   case ComboBox1.ItemIndex of
  11.    0 : ADOQuery1.Filter := 'Type = ' + QuotedStr(Edit_Params.Text);
  12.    1 : ADOQuery1.Filter := 'AuthorName = ' + QuotedStr(Edit_Params.Text);
  13.   end;//case  
  14.   end//if  
  15.   else
  16.     ADOQuery1.Filtered := false;
  17. with ADOQuery1 do begin
  18.   Close;
  19.   SQL.Text := 'SELECT * FROM ' + tblname;
  20.   Open;
  21.   end;
  22.   NbColumns := DBGrid1.Columns.Count;
  23.   for I := 0 to NbColumns-1 do begin
  24.     DBGrid1.Columns.Items[I].Width := 100;
  25.     end;
  26. end;


Code :
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   with Form1 do begin
  4.     Height := 350;
  5.     Width := 410;
  6.   end;
  7.   ADOConnection1.GetTableNames(ComboBox1.Items);
  8.   ComboBox1.ItemIndex :=0;
  9.   ChkBx_Filter.Checked := False;
  10.   Edit_Params.Enabled := false;
  11.   Static_params.Caption := 'Type :';
  12. 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
mood
Publicité
Posté le 06-01-2003 à 14:22:27  profilanswer
 

n°280344
KrzAramis
Help Me
Posté le 06-01-2003 à 18:19:09  profilanswer
 

[:rv82]  
 
god damn it

n°280936
KrzAramis
Help Me
Posté le 07-01-2003 à 11:34:02  profilanswer
 

:jap:

n°281102
KrzAramis
Help Me
Posté le 07-01-2003 à 15:04:19  profilanswer
 

Bande de mechants !  :fou:  vous m avez pas aide !  :(  c est trop dur le debut d anne ou quoi !  :??:  
enfin MOA ! j ai trouve MOA ! (faute d ortographe voulue)  :p  
voici la soluce ( ne pas utiliser case ... of )
 

Code :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var  tblname : string;
  3. var I, NbColumns : integer;
  4. begin
  5. if ComboBox1.ItemIndex < 0 then Exit;
  6. tblname := ComboBox1.Items[ComboBox1.ItemIndex];
  7. ADOQuery1.Filtered := false;
  8. with ADOQuery1 do begin
  9.   Close;
  10.   SQL.Clear;
  11.   SQL.Text := 'SELECT * FROM ' + tblname;
  12.   Open;
  13.   end;
  14.   NbColumns := DBGrid1.Columns.Count;
  15.   for I := 0 to NbColumns-1 do begin
  16.     DBGrid1.Columns.Items[I].Width := 100;
  17.     end;
  18. if ChkBx_Filter.Checked = true then  begin
  19.   if ComboBox1.ItemIndex = 0 then begin
  20.     ADOQuery1.Filter := 'Type = ' + QuotedStr(Edit_Params.Text);
  21.     end;
  22.   if ComboBox1.ItemIndex = 1 then begin
  23.     ADOQuery1.Filter := 'AuthorName = ' + QuotedStr(Edit_Params.Text);
  24.     end;
  25.    ADOQuery1.Filtered := True;
  26.   end//if
  27.   else
  28.     ADOQuery1.Filtered := false;
  29. end;


 
 :hello:  
 
A bientot  @->--


Message édité par KrzAramis le 07-01-2003 à 15:05:16

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [resolu]ADO Access SQL : filtre

 

Sujets relatifs
[Delphi Studio 7 Personnal ] et les composants [Indy] RESOLU =)Pb avec la fonction highlight_string(). [RESOLU]
[PHP] Calculer le nombre de jours entre deux dates ? [résolu]VBA Access Facile mais pas pour moi
Besoin d'aide pour un forum... [auto-résolu][mySQL] Problème de requête avec count(*) [résolu]
[PHP] Problème de "mise à jour" [résolu].htaccess inopérant bourdail -- resolu !
Probleme avec des espaces... [ Resolu ][PHP] Probleme avec exec() positionné dans une boucle...[resolu]
Plus de sujets relatifs à : [resolu]ADO Access SQL : filtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR