
Envoyé par
orca29
Cependant, j'ai abandonné Paradox pour me tourner vers Access. Comme je l'ai dit, je débute dans les bases de données
je ne suis pas objectif sur le sujet mais pour moi Access est guère mieux que Paradox
contrôle ADOConnection, ADODataset, ADOQuery et ADOTable.
et ADO, c'est loin d'être ma tasse de thé ! en essayant de vous faire rapidement un exemple j'ai été incapable de faire les choses comme je pourrais le faire avec Firedac ou ZEOSDBO !
J'ai créé une table qui s'appelle "MaTable" et ai trois champs. Un champ NOM, un champ PRENOM et un champ VILLE.
en gros quelque chose comme ça ?

j'ai juste préféré utiliser un TEdit et un bouton pour lancer la recherche
Voilà la requête que j'utiliserai :
SELECT NOM,PRENOM,VILLE FROM TABLE WHERE NOM=:N
ATTENTION, j'y ajoute de gros bémols car ce code peut ramener plusieurs enregistrements au lieu d'un seul
obtenir qu'un seul enregistrement (le premier) passera par
SELECT TOP 1 NOM,PRENOM,VILLE FROM TABLE WHERE NOM=:N ORDER BY NOM
Une fois cette requête paramétrée établie (paramétrée car il y a le ":N" dans le texte) le reste est assez aisé
Voici le code rapidement bâclé :
1 2 3 4 5 6 7 8 9 10 11
|
// Recherche en cliquant sur le bouton
procedure TForm1.Button1Click(Sender: TObject);
begin
With ADOQuery1 do
begin
Close;
ADOQuery1.Parameters.ParamByName('N').asString:=Edit1.Text;
Open;
end;
end; |
Mais, attention, dans ce scénario, il n'y a aucune liaison entre la grille (et donc la table) et la recherche
En admettant que vous en vouliez un, tout d'abord la requête serait inutile et il faudrait plutôt utilisé
s'il ne s'agit que d'une recherche sur le nom
ADOTable1.Locate('NOM',Edit1.Text,[loPartialKey,loCaseInsensitive])
pour une recherche nom+prénom (2 TEdit pour les critères)
ADOTable1.Locate('NOM;PRENOM',VarArrayOf([Edit1.Text,Edit2.Text])[loPartialKey,loCaseInsensitive])
Partager