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

Bases de données Delphi Discussion :

[interbase6]liste en fonction d'un dbgrid


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut [interbase6]liste en fonction d'un dbgrid
    bonjour,
    j ai deux tables:une table patient avec toutes ses données(num_patient,nom,prenom,...)et une autre prescription avec(num_prescription,code_prescription,num_patient,...)ces tables sont reliées entre elles par num_patient.
    j ai un dbgrid comprenant les données patient et quand je selectionne un patient dans le dbgrid je voudrai que toutes les prescriptions de ce patient soient visibles dans une liste.
    Pour la liste quel composant dois je utiliser:tdblookuplistbox,tdblistbox,...?
    Doit je utiliser un tibquery pour relier les deux tables? si oui comment remplir la liste avec le resultat de la requete du tibquery?
    Dans mon ibquery je pense mettre la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from prescription,patient where prescription.num_patient=patient.num_patient
    je suppose que je doit remplir la propriété oncelllclick du dbgrid avec la requete et l affecter a la liste?

    merci d'avance

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Salut,

    Pour relier des requêtes en maître-détail, consultes la FAQ.
    http://delphi.developpez.com/faq/?page=SQL#maitredetail

    Ensuite tu pourras utiliser les résultats de la seconde requête (qui donne le détail) pour alimenter le composant de ton choix.

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    donc si j ai bien compris,je doit ajouter un ibsql au datamodule dans lequel je met la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from prescription,patient where prescription.num_patient=patient.num_patient
    mais comment faire pour alimenter ma liste avec cette requete?
    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    bon alors suite a la lecture de la faq
    voila le code que j ai fait mais il ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    datamodule.DataModule1.IBQuery1.Close;
    datamodule.DataModule1.IBQuery1.SQL.Text:='select *';
    datamodule.DataModule1.IBQuery1.SQL.Text:='from prescription ';
    datamodule.DataModule1.IBQuery1.SQL.Text:='where nopatient = : nopatient ';
     
    datamodule.DataModule1.IBQuery1.Param[0].AsString:=dbgrid1.SelectedRows.Items[0];
    datamodule.DataModule1.IBQuery1.Open;
    //dblistbox1.Field.AsString:= datamodule.DataModule1.IBQuery1;
    datamodule.DataModule1.IBQuery1.Close;
    il me met en message d'erreur quand je clique sur une colonne du dbgrid :list index out of bound(0); [/code]
    Est ce que quelqu un pourrait aussi me dire comment affecter le résultat de cette requete a un dblistbox?
    merci

  5. #5
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Pourquoi utiliser une requete dynamique et en plus paramétrée ??
    En plus votre requete est mal paramétrée les : doivent coller le nom de la variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datamodule.DataModule1.IBQuery1.SQL.Text:='where nopatient = :nopatient ';
    Et il faut éviter d'utiliser des select * et préférer ne rammener que les colonnes necessaires (si elles sont toutes necessaires alors les nommer toutes).

    Enfin si vous faites un close à la fin, vous ne risquez pas de pouvoir exploiter le résultat.

    En plus au vu de votre requete (affichage de toutes les prescriptions faites à un patient) je n'ai pas l'impression que c'est un DBListBox qu'il vous faut. Mais plutot un DBGrid.
    Le TDBListBox c'est comme un TDBComboBox mis à part que la liste est affichée tout le temps et pas seulement quand on appuit sur la fleche.
    La liste contenu dans le TDBListBox n'est pas faite pour être le résultat d'une requete (il y a le TDBLookupListBox pour ça). Et ces composants sont fait pour pouvoir selectionner UN élément de cette liste. Bref utiliser un DBGrid pour afficher le résultat de votre requete.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    ok merci si j ai essayé avec une requete parametrée c'est parce que je pensais que c'etait avec ca que je devais le faire.
    je vais essayer avec un dbgrid,je voulais seulement qu on puisse visualiser les prescription d'un patient et je trouvais cela plus beau dans une liste que dans une dbgrid.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    encore une petite question,
    pour affecter ma requete au dbgrid y a t il moyen de mettre ma requete dans le datasource du dbgrid,car quand j essaye je ne vois pas le tquery dans le datasource,je ne vois que que des datasource
    merci

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    TIBQuery->TDataSource->DBComposant

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    une derniere petite chose,
    sur mon datamodule j utilise des ibdataset, la propriete dataset de mes datasource est mise sur leur ibdataset correspondant.
    Si je veux ajouter un ibquery en plus sur le datasource y a t il moyen de le faire ou vaut il mieux choisir de tout faire avec des ibquery(même les insertions,modifications,insertion)?
    en fait j utilise les ibdataset pour l insertion,modif,update,suppression et je voudrais utiliser des ibquery pour le reste(pour les dbgrid,...)

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Je ne comprend pas ce qui vous pose probleme ?

    Sur votre datamodule vous mettez ce dont vous avez besoin.
    Le IBDataSet pour les ensembles de données que vous souhaitez pouvoir modifier et les ibquery (ou un indataset avec que le select de renseigné) pour les ensembles de données que vous voulez afficher seulement.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    en fait mon probleme est simple mais c'est moi qui m'emmele.
    Je voudrais avoir un dbgrid avec les patients et un deuxième qui affiche seulement les prescriptions en fonction du patient sélectionné dans le premier dbgrid.
    Je pensais donc utiliser une requete qui recevrait en parametre le patient selectionné dans le premier dbgrid et qui afficherais le résultat dans le deuxieme(les prescriptions).
    Mais a mon avis il y a plus simple et je suis en train de réinventer la roue.

    merci de votre patience

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    c' est bon merci pour tout j'ai trouvéla solution

  13. #13
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    http://delphi.developpez.com/faq/?page=SQL#maitredetail
    Tout est là, ca fonctionne parfaitement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Listes des fonctions mathématiques
    Par boulette18 dans le forum MFC
    Réponses: 1
    Dernier message: 28/09/2005, 07h38
  2. Réponses: 2
    Dernier message: 04/08/2005, 12h16
  3. Liste de Fonction DirectX
    Par naejg dans le forum DirectX
    Réponses: 6
    Dernier message: 30/03/2004, 16h12
  4. Liste des fonctions
    Par Mookie dans le forum C
    Réponses: 2
    Dernier message: 22/09/2003, 17h42
  5. [postgreSQL] liste de fonctions
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 17h13

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