Adoquery [Résolu]

Signaler
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008
-
Bonjour,

je recherche le moyen de filtrer une requête adoquery en pernant une variable de mon programme comme paramètre.
j'ai essayer avec l'option filter mais sans succes.
Quelqu'un pourrait-il m'éclairer.
Merci

11 réponses

Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

Autre chose quand mème
Pourkoi tu rempli tes EDIT avant que tu filtre ta requête, je pige pas l'intérêt !!
tu devrai placer tes EDIT apres le Open !! normalement.

bref, pour récupérer tes valeur tu peux aussi faire cela
Edit2.text := ADOQuery1.FieldByName('Nom_Societe').AsString;

si tu ne connais pas le numéo de champs.

Autre exemple requete Query valable

refrence := '00034';  // Evidemment c'est un STring

    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM Fournisseur');
    ADOQuery1.SQL.Add('WHERE Code = "' + Reference + '" ');
    ADOQuery1.Open;

    Edit2.text : = ADOQuery1.Fields.Fields[1].AsString;

equivaut à :
    
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM Salarie');
    ADOQuery1.SQL.Add('WHERE Code=:MonFiltre);
    ADOQuery1.Parameters.ParamByName(MinFiltre) := reference;
    ADOQuery1.Open;
    Edit2.text := ADOQuery1.Fields.Fields[1].AsString;  // J'envoi une donné dans EDIT1.text

2 choses
1) apres le Open il est probable qu'il y est plusieur réponse alors il faudra parcourir ta requete genre :
While ADOQuery1.EOF do
Begin
   edit2.text := ADOQuery1.Fields.Fields[1].AsString;  // sa va aller vite lol
ADOQuery1.next
end;

2) Pense à fermer ton Query aussi
ADOQuery1.Close;
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

Pour filtrer un, ADOQuery
Evidement, je concidère que la connexion a ton query est valide

ADOQuery1.SQL.clear;  // (au cas ou tu autais quelquechose dedans)
ADOQuery1.SQL.Add('SELECT Code, Nom, Prenom FROM MaTable');
ADOQuery1.SQL.Add('Where Nom=:Marecherche');
ADOQuery1.Parameters.ParamByName(MaRecherche) := Edit1.text;
ADOQuery1.Open;  // <-- Là ta requete est filtrer ta pu qu'a la parcourir

Il y a pas d'autre méthode mais celle-ci est facile a comprendre.

a plus
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

je voulais dire
IL Y A D'AUTRE METHODE lol
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

il me met ces deux messages...

[Erreur] Dlg_Fournisseur.pas(146): La partie gauche n'est pas affectable
[Erreur] Dlg_Fournisseur.pas(146): Types incompatibles : 'TParameter' et 'TCaption'
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

Donne ta procédure je pourrais plus t'aider.
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

il met ces messages par rapport à la ligne : ADOQuery1.Parameters.ParamByName(MaRecherche) := Edit2.text;
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

procedure TFournisseurForm.DlgSetup;
var
  jour, mois, annee : integer;
  MaRecherche : string;
begin
  made := false;




  Edit2.Text := ADOQuery1nom_societe.Value;
  Edit1.Text := ADOQuery1personne_contact.Value;
  Edit3.Text := ADOQuery1rue.Value;
  Edit4.Text := ADOQuery1numero_rue.Value;


  ADOQuery1.SQL.clear;  // (au cas ou tu autais quelquechose dedans)
ADOQuery1.SQL.Add('SELECT * fournisseurs');
ADOQuery1.SQL.Add('Where Nom_societe =:Marecherche');
ADOQuery1.Parameters.ParamByName(MaRecherche) := Edit2.text;
ADOQuery1.Open;  // <-- Là ta requete est filtrer ta pu qu'a la parcourir


 


  DonnerDateActuelle(jour, mois, annee);


  ComboBox1.ItemIndex := jour - 1;
  ComboBox2.ItemIndex := mois - 1;
  ComboBox3.ItemIndex := annee - 2000;


  ComboBox4.ItemIndex := LocFournisseur.Getpays - 1;
  AdapterDebutTVA(LocFournisseur.Getpays);




  made := true;
end;
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

Select * FROM Fournisseurs et pas SELECT * Fournisseurs
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

toujours les même messages
Messages postés
42
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
21 octobre 2008

Biensur, j'avais pas fini
tu peux pas faire ça :
  Edit2.Text := ADOQuery1nom_societe.Value;

Pour récupere des données de ta table fournisseur fait comme cela :

Edit2.Text : = ADOQuery1.Fields.Fields[1].AsString;

En imaginant que [1] c'est le 2ème champs de ta table fournisseur
[0]
[1] ca doit etre nom_société je pense
[2]
Messages postés
32
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
11 septembre 2008

merci beaucoup,
ca fonctionne.

désolé pour le retard mais c'est la ducasse de Ath lol