Recherche/Filtrage Multicriteres dans une base de donnees a l'aide d'une combobo

Aklissj5 - 26 oct. 2012 à 18:21
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 30 oct. 2012 à 11:57
Bonjour :)

Bon voila le topo :D

Je veux pouvoir effectuer des opérations de filtrage et de recherche dans les différents champs de ma base de données (Nom, prénom, adresse etc...) et cela si possible en ayant la possibilité de sélectionner le champ adéquats à l'aide d'une Combobox.

Voici le code régissant la fonction de recherche (uniquement sur le champ 'nom'):

procedure TForm1.BrechercheClick(Sender: TObject);
Var Option: TLocateOptions;
begin
If ((Table1.recordcount=0) and (table1.state<>dsinsert))then
exit;
if erechnom.Text<>'' then
begin
Option:=[loPartialKey]; //pour ne pas faire attention a la casse
Table1.Locate('nom',erechnom.Text,Option)
end;
end;


Voici le code régissant la fonction de filtrage (uniquement sur le champ 'nom'):
procedure TForm1.EfiltreNomChange(Sender: TObject);
var Filtre:string;
begin
//Construction du filtre
Filtre:='nom ='''+ efiltrenom.Text +'*''';
If ((Table1.recordcount=0) and (table1.state<>dsinsert))then
exit;
If efiltrenom.Text='' then
begin
Table1.Filtered:=false; //arrete le filtrage
exit;//quiter la méthode
end;
Table1.Filter:=Filtre; //mise en place du filtre
Table1.Filtered:=True; //activation du filtre
end;


Jusqu'ici tout fonctionne bien (sans la combobox)lol

En gros la question qui se pose est : Comment dois-je m'y prendre pour faire correspondre les champs de ma base avec les items de ma combobox pour ainsi effectuer les opération de filtrage et de recherche ?

J'espère que c'est assez claire car au départ j'avais tapé un long message explicatif que j'ai malencontreusement perdu a la suite d'une fausse manipp xD n'hésitez pas a demander des précision si besoin ;)


Merci :)

3 réponses

PythonGreg Messages postés 68 Date d'inscription jeudi 3 novembre 2011 Statut Membre Dernière intervention 6 février 2015
26 oct. 2012 à 19:35
Bonsoir Aklissj5

Je te conseille le composant AdoQuery
Voici un filtre sur un base de données

Procedure TForm1.ComboBox1Change (Sender : TObject) ;
Begin
AdoQuery.Active := False ;
AdoQuery.Sql.Text :?Select * form (1) Where (2) QuotedStr(ComboBox1.texte)
AdoQuery.Active := True;
End;


1 : Le nom de la Table
2 : Le nom de la Zone que tu veu filtré

Exemple :
ComboBox1.Items.add('A');
ComboBox1.Items.add('B');
ComboBox1.Items.add('C');
Exemple
- Ma table du nom : BaseD
- le champ de ma table s'appéle 'Nom'
Pour filtré tout les noms qui commence par la lettre 'B'

Procedure TForm1.ComboBox1Change (Sender : TObject) ;
Begin
AdoQuery.Active := False ;
AdoQuery.Sql.Text := ?Select * form BaseD Where Nom= QuotedStr(ComboBox1.texte)
AdoQuery.Active := True;
End;


Conclusion tout les noms qui commence par la lettre 'B' son afficher
0