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

C++Builder Discussion :

établir une relation Maitre/Détail avec SQL


Sujet :

C++Builder

  1. #1
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut établir une relation Maitre/Détail avec SQL
    Bonjour,

    on m'a proposé ce code dans l'événement AfterScroll de la table maitre (ici c'est customer) pour créer une relation maitre/détails avec SQL mais ça n'a pas marché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query1->SQL->Clear();
     
    Query1->SQL->Add("SELECT * FROM customer, orders WHERE ");
    Query1->SQL->Add("customer.CustNo=orders.CustNo  ");
    Query1->Open();
    j'utilise pour cet exemple le SGBD: paradox, la base de donnée: BCDEMOS, la table maitre: customer.db et la table détails: orders.db.

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut
    ton code est parfaitement valide
    ou affiche tu le résultat de ta requête ?
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut
    Salut,
    j'affiche le résultat dans un DBGrid.

    Merci

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Dans ton evenement , ajoutes une sorte de trace avec un message box ou un texte dans un memo par exemple , juste pour voir que çà vient pas de là .

  5. #5
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut
    salut,

    merci cedni pour l'idée, j'ai ajouté deux messages box le code s'exécute bien mais la relation ne s'établit pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::maitreAfterScroll(TDataSet *DataSet)
    {
    Query1->SQL->Clear();
    ShowMessage("verifier le parcours");
    Query1->SQL->Add("SELECT * FROM customer, orders WHERE ");
    Query1->SQL->Add("customer.CustNo=orders.CustNo  ");
    Query1->Open();
    ShowMessage("est ce que ça vient de là?");
    // apparemment non! 
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Par défaut
    bonjour à tous voilà SmileSoft je te propose ce code j l'ai testé et il marche parfaitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT * FROM customer, orders WHERE ");
    //TatableMaitre c'est le composant Table relié à ta table maitre
    Query1->SQL->Add("CustNo="+TatableMaitre->FieldByName("CustNo")->AsString); 
    Query1->Open();
    Bon courage

  7. #7
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut
    salut,
    merci sam pour la 2eme solution mais je n'ai pas le résultat désiré, dans mon inteface j'ai deux DBgrid associés aux tables customer et orders, ce que je cherche l'ors de l'exécution en cliquant sur un enregistrement de la table maitre customer j'aurai tous les enregistrements associés de la table orders.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 241
    Par défaut
    re,
    voilà je suppose que tu a 2 composant Table(Table1--->Customer ; Table2--->orders) et un composant Query1 et 2 DBGrid(DBGrid1------->Table1 ; DBGrid2------->Query1)
    je cherche l'ors de l'exécution en cliquant sur un enregistrement de la table maitre customer j'aurai tous les enregistrements associés de la table orders.
    alors dans l'événement OncellClick de DBGrid1 tu mis ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT * FROM  orders WHERE ");
    //TatableMaitre c'est le composant Table relié à ta table maitre
    Query1->SQL->Add("CustNo="+Tatable1->FieldByName("CustNo")->AsString); 
    Query1->Open();
    sinon si tu veux avoir ces enregéstrement lorsque tu choisis un enregistrement dans ta table maitre tu mis le code dans OnAfterScroll.
    Bon courage.

  9. #9
    Membre éclairé Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Par défaut
    Citation Envoyé par sam83 Voir le message
    re,
    voilà je suppose que tu a 2 composant Table(Table1--->Customer ; Table2--->orders) et un composant Query1 et 2 DBGrid(DBGrid1------->Table1 ; DBGrid2------->Query1)
    grand merci sam , mon erreur était au niveau du DBGrid2 qui pointait sur Table2 aulieu de Qury1.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/11/2008, 07h16
  2. Exemple d'application Relation Maitre-détail avec Dbexpress
    Par Peter K. dans le forum Bases de données
    Réponses: 0
    Dernier message: 13/11/2007, 11h33
  3. Mise à jour autravers d'une relation maitre-Détail
    Par Paxaranne dans le forum Forms
    Réponses: 3
    Dernier message: 26/07/2007, 14h00
  4. Gérer une relation Maitre détail
    Par codial dans le forum Bases de données
    Réponses: 10
    Dernier message: 16/10/2006, 10h01
  5. [TTable] Pb avec une relation maitre-detail
    Par kase74 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/10/2005, 10h34

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