besoin d'aide :Filtre bdgrid

seydel - 24 déc. 2012 à 10:14
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 21 janv. 2013 à 12:38
Bonjour,
je suis débutant en delphi...je viens d'afficher un dbgrid (nom,prenom,phone)...je veux maintenant filtrer la grille avec un edit pour récupérer un numero et modifier avec le "navigator".

3 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 déc. 2012 à 20:06
bonsoir,

le mieux est de caler la table sur l'enregistrement recherché :
il faut un query avec la propriété SQL : select * from MyTable

Procedure UpdateMyQuery;
begin
try

MyQuery.Close;
MyQuery.Open;

// la méthode locate cale la table
if MyQuery.locate('Nom;Prenom',VarArrayof([Edit1.text, Edit2.text]), []) then  // saisies -> edit1 -> nOM    edit2-> prénom
begin
MyQuery.Edit;  // met la table en mode édition
MyQueryPHONE.text := edit3.Text;   // on saisit le numéro de téléphone dans un édit
MyQuery.Post;
end
else
ShowMessage('l''enregistrement n''existe pas..');

finally
MonQuery.refresh;
end;

end;



cantador
0
bon jour
voici un petit programme avec une table une dbgrid et un edit pour le filtre ecrit ce code dans l'evenement KeyDown de edit1

procedure table1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
    begin
  case key of


VK_return :    la touche retour pour comancer le filtre a traver ce qui est ecrit en edit.text le filtre ce faie sur les deux champ nom et prenom
 begin
    Form1.table1.Filter :'(nom ''' + edit1.Text + '*'')or (Prenom = ''' + edit1.Text + '*'')' ;
   
    Form1.table1.Filtered := edit1.Text<> '';
           
 end;
VK_escape  : // le premier escape c pour anuler le filtre le 2 eme pour vide edit.text
    if Form1.table1.Filtered = true then    
          Form1.table1.Filtered := false;
       else  
          edit1.Text := '';


vk_home : form1.table1.First; // c'est juste pour le deplacement dans la table
vk_up  : form1.table1.Prior;
vk_down : form1.table1.Next;
vk_end : form1.table1.Last;
end;


bon courage
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
21 janv. 2013 à 12:38
[i]
Form1.table1.Filter :'(nom ''' + edit1.Text + '*'')or (Prenom = ''' + edit1.Text + '*'')' ;/i


Cette instruction n'est pas valable, car elle va filtrer les enregistrements
soit des noms ou des prénoms !

ex: si dans la table, on a

MARCHAND Pierre
DURAND Henri
DUBOIS Henri
LAMBERT Henri
DUPOND Pierre
MARCHAND Henri
DUBOIS Patrick

et que l'on cherche DUBOIS Henri

résultat le filtre donnera :

DUBOIS Henri
DURAND Henri
LAMBERT Henri
MARCHAND Henri
DUBOIS Patrick


sympa !


cantador
0
Rejoignez-nous