IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

probléme avec la recherche


Sujet :

Delphi

  1. #1
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut probléme avec la recherche
    bonjour à tous,

    voila j'aimerais vous demander comment faire quand on a une recherche a faire et que le résultat n'est pas qu'un seul enregistrement mais 2 ou 3 car moi ma recherche me donne qu'un seul enregistrement;
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    query1.Active:=false;
    query1.SQL.Clear;
    query1.SQL.Add(' select * from diplome where matri='''+edit1.Text+''' ' );
    query1.Open;
    edit1.Text:=query1.FieldValues['matri'];
    edit2.Text:=query1.FieldValues['ref_dip'];
    edit3.Text:=query1.FieldValues['intitule'];
    edit4.Text:=query1.FieldValues['date_obt'];
    edit5.Text:=query1.FieldValues['nom_org'];
    edit6.Text:=query1.FieldValues['type_org'];
    query1.SQL.Clear;

    avec ce code je récupére un seul enregistrement alors que la personne peut avoir deux diplomes voire 3

    merci

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 922
    Points : 6 038
    Points
    6 038
    Par défaut
    Il faut faire une petite boucle genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Query1.First;
    while not query1.eof do begin
    // récupération des champs
       query1.next;
    end; // while
    query1.close;

  3. #3
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    vous voulez dire comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    query1.Active:=false;
    query1.SQL.Clear;
    query1.First;
    while not query1.eof do
    begin
    query1.SQL.Add(' select * from diplome where matri='''+edit1.Text+''' ' );
    query1.Open;
    edit1.Text:=query1.FieldValues['matri'];
    edit2.Text:=query1.FieldValues['ref_dip'];
    edit3.Text:=query1.FieldValues['intitule'];
    edit4.Text:=query1.FieldValues['date_obt'];
    edit5.Text:=query1.FieldValues['nom_org'];
    edit6.Text:=query1.FieldValues['type_org'];
    query1.Next;
    end;
    query1.Close;

  4. #4
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    en faisant comme ca j'ai eut un message d'erreur:

    cannot perform this operation on a close data set doit je enlevé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    query1.Active:=false;
    query1.SQL.Clear;
    et faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    query1.first;
    whilenot eof query1 do
    begin
    query1.SQL.Add(' select * from contrat where mat='''+edit1.Text+'''  ');
    query1.Open;
    edit1.Text:=query1.FieldValues['mat'];
    edit2.Text:=query1.FieldValues['ref_contrat'];
    edit3.Text:=query1.FieldValues['type_contrat'];
    edit4.Text:=query1.FieldValues['duree'];
    edit5.Text:=query1.FieldValues['du'];
    edit6.Text:=query1.FieldValues['au'];
    edit7.Text:=query1.FieldValues['poste'];
    edit8.Text:=query1.FieldValues['struct'];
    edit9.Text:=query1.FieldValues['departement'];
    query1.next;
    end;
    query1.close;
    end;

  5. #5
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 922
    Points : 6 038
    Points
    6 038
    Par défaut
    La requète (select...) doit se situer avant la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    query1.Active:=false;
    query1.SQL.Clear;
    query1.SQL.Add(' select * from diplome where matri='''+edit1.Text+''' ' );
    query1.Open;
    query1.First;
    while not query1.eof do
    begin
    edit1.Text:=query1.FieldValues['matri'];
    edit2.Text:=query1.FieldValues['ref_dip'];
    edit3.Text:=query1.FieldValues['intitule'];
    edit4.Text:=query1.FieldValues['date_obt'];
    edit5.Text:=query1.FieldValues['nom_org'];
    edit6.Text:=query1.FieldValues['type_org'];
    query1.Next;
    end;
    query1.Close;

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    while not query1.eof do
    begin
    edit1.Text:=query1.FieldValues['matri'];
    edit2.Text:=query1.FieldValues['ref_dip'];
    edit3.Text:=query1.FieldValues['intitule'];
    edit4.Text:=query1.FieldValues['date_obt'];
    edit5.Text:=query1.FieldValues['nom_org'];
    edit6.Text:=query1.FieldValues['type_org'];
    query1.Next;
    end;
    query1.Close;
    [/code]
    Le hic c'est que ce code n'as pas de sens car ce sera les valeurs de la dernière ligne qui vont être affiché.
    Mieux vaut utilise une Grille ou un ListView pour afficher toutes les lignes.

    A+

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par Andry Voir le message
    Le hic c'est que ce code n'as pas de sens car ce sera les valeurs de la dernière ligne qui vont être affiché.
    Mieux vaut utilise une Grille ou un ListView pour afficher toutes les lignes.

    A+
    +1

  8. #8
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    dans le cas ou le resultas de la recherche nous donne plusieur enregistrement
    alors l'affichage ce fait dans un dbgrid et pas dans des edit pour voir toute les enregistrement.
    relier votre datasource de ton dbgrid avec le dadasource du query.

  9. #9
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    bonjour à tous,
    oui c'est vrai je récpére que le dernier enregistrement
    j'aimerais utiliser un composant qui m'afficherais le résultat de la recherche que ce soit un deux ou plus

    j'ai essayé la listview mais je ne c'est pas l'utiliser est ce que vous pouvez m'orienter sur son utilisation

    merci bcp

  10. #10
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    la recherche s'effectue correctment c'est bon et je la récupére dans un dbgrid j'ai enlevé le
    merci

Discussions similaires

  1. problème avec if, recherche non explicite
    Par beebe dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/09/2008, 13h51
  2. Problème avec la recherche FULLTEXT
    Par izbing dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2008, 22h13
  3. [Explorer] Problème avec la recherche
    Par marcel marie dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/08/2007, 08h47
  4. Problème avec la recherche en fulltext
    Par pepelele dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/05/2007, 14h32
  5. [0.8] Problème avec la recherche MVC (Tuto d'Akrabat)
    Par developpeur_mehdi dans le forum Zend_Db
    Réponses: 4
    Dernier message: 09/03/2007, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo