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 :

Insertion dans 2 tables (Maitre + detaille )


Sujet :

Bases de données Delphi

  1. #1
    nil
    nil est déconnecté
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Points : 50
    Points
    50
    Par défaut Insertion dans 2 tables (Maitre + detaille )
    Bonjour j'ai un ti pb que peut etre vous avez la solution
    bein voila j'ai 2 tables (maitre detaille)
    ( table : reception , table : prod_recus )
    sachant que la clé primaire dans la table reception est un entier autoincrement alors dans ma forme je veux avec un boutton de validation inserer dans les 2 tables en meme temps
    le problem qui se pose c comment recuperer la clé primaire qui est autoinrement de la table reception afin de l'inserer comme une clé secondaire dans la table prod_recu !

  2. #2
    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
    Premièrement,
    Il nous faut plus de details à savoir, quelle bdd tu utilise,
    Tu utilise quelle composant d'accès,

    Après, on pourra t'aider un peu plus.

    A+
    On progresse .....

  3. #3
    nil
    nil est déconnecté
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    bein voila je travaile avec Delphi 7 et comme sgbd SQL SERVER je travaile avec les objes ADO
    si vous avez compris mon pb proposer moi une solution oubien carrement une méthode de travail de tel sorte que quand je fais un insert dans ma table maitre je recupere aussitot la clé primaire de mon enregistrement qui est ( en autoincrement) afin de faire une autre insertion au niveau de la table détaille ( en clé secondaire )

  4. #4
    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
    Je travaille pas beaucoup avec SQl Server, mais si j'etais dans ton cas, j'utiliserais un PS qui ferait l'insertions.

    A+
    On progresse .....

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Schelatiquement :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    try
      Adoconnection.begintrans; // démarrage de la transaction
     
      With TaTable do
      begin
        Append;
        // insertion des champs
        Post;
      end;
     
      // Requete : Select Max([Le champ auto]) as Resultat from TAtable
      // ou
      // Requete identity pour récupérer le resultat du dernier autoincrement de la table
     
      // Récupération de la valeur 
      id := FieldByName('Resultat').asinteger;
     
      With TaTableDetail do
      begin
        Append;
        FieldByName([Le champ correspondant]).asinteger := id;
        // insertion des champs
        Post;
      end;
      AdoConnection.CommitTrans; // valide les modifications si tout ce passe bien
    Except on Exception do
      Adoconnection.RollBackTrans; // annule tout, si y a un problème
    end;
    C'est schematique, donc après a toi d'implementé ce qu'il faut.
    sinon,comme le dit andry, par une procédure stockée, c'est pas ma aussi, tu n'as plus qu'à appeler une seul requete, c'est la PS qui se charge de l'insertion.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    nil
    nil est déconnecté
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Merci pour votre réponse mais avec cette méthode sa marche pas car je travail sous reeau qui veux dire bcp de clients vers la bdd et si je vais recuperer le max a chaque fois bein peut etre que ce sera un faux !!

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Non car pour eviter cela il faut utiliser les transactions (Begintrans, commit,rollback)

    C'est l'interet de ces fonctions surtout avec SQL Serveur ^^

    Quand tu fais appel a un begintrans, tant qu'il n'y a pas eu de commit ou de rollback, aucune autre transaction ne peut être traitée.


    Une bonne explication >>>Ici<<<
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    nil
    nil est déconnecté
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    mais si je fais pas de commit donc yaura pas un enregitrement sur ma table maitre et qui impliquera que je pourrai pas recuperer la clé primaire de cet enregistrement meme a fin de l'inserer comme une clé secondaire sur ma table detaille !!

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par nil
    mais si je fais pas de commit donc yaura pas un enregitrement sur ma table maitre et qui impliquera que je pourrai pas recuperer la clé primaire de cet enregistrement meme a fin de l'inserer comme une clé secondaire sur ma table detaille !!
    Bien sur que si, des que tu fais un post, la valeur a ton champ autoincrémenté sera une valeur fantome mais existante jusqu'au commit ou rollback.

    Sur le commit : la valeur sera vraiement enregistrée dans la table
    Sur un rollback : la valeur sera libérée pour la transaction suivante.

    Voir >>>ici<<<
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    nil
    nil est déconnecté
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Ok je pige
    je vais essayer ctte solution et je vous reponds quelque soit le resultat d'ici quelques heures .
    Merci d'avance

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par nil
    Ok je pige
    je vais essayer ctte solution et je vous reponds quelque soit le resultat d'ici quelques heures .
    Merci d'avance
    Lit bien le lien que je t'ai fournit, car il y a un truc a faire avec SQL Serveur.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  12. #12
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    j'éspére que je serais pas hor sujet:
    tu dis que t'ulise un auto increment alors pas besoin d'un max
    pour inséré le clé secondaire utilise le onafterpost, c'est ce que je fait mois
    bon dev
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. insert sur table maitre/detail
    Par looping dans le forum SQL
    Réponses: 1
    Dernier message: 22/04/2013, 07h31
  2. insert dans une relation maitre/detail
    Par Issam dans le forum Silverlight
    Réponses: 0
    Dernier message: 24/09/2010, 17h47
  3. recherche dans table maitre detail
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/03/2006, 13h00
  4. Extraction d'un .txt et Insertion dans une table
    Par PoPmiSiR dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2004, 19h13
  5. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24

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