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

VB 6 et antérieur Discussion :

Récuperer ID au cours d'une transaction


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut Récuperer ID au cours d'une transaction
    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
    Public Function enregistreReparationMateriel(raison, centre, codeArticle, numDDSIS, marque, numSerie As String) As Boolean
    Dim req As String
        If UCase(raison) = "VERIFICATION PREVENTIVE" Then
            raison = "Vérification préventive"
        End If
        If UCase(raison) = "PANNE" Then
            raison = "Panne"
        End If
        On Error GoTo err
        req = "insert into " & lireIni("depot", "fichier") & " (raison,centre_de_secours,code_article,n_ddsis,marque,`N°série`) values (" & Chr(34) & raison & Chr(34) & "," & Chr(34) & centre & Chr(34) & "," & Chr(34) & codeArticle & Chr(34) & "," & Chr(34) & numDDSIS & Chr(34) & "," & Chr(34) & marque & Chr(34) & "," & Chr(34) & numSerie & Chr(34) & ")"
        cmdTmp.ActiveConnection = cnx
        cmdTmp.CommandText = req
        cnx.BeginTrans
        cmdTmp.Execute
        cnx.CommitTrans
        enregistreReparationMateriel = True
        Exit Function
    err:
        cnx.RollbackTrans
        MsgBox err.Description
        enregistreReparationMateriel = False
    End Function

    En gros ici, j'insère des éléments dans une table. C'est une transaction n'y a-t-il pas moyen de récupérer au cours de la transaction l'ID ainsi créé ???

    ID automatique dans ma table j'ai oublié de préciser.

    Le sgbd c'est filemaker
    Le prog est en VB 6

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 160
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    req = "insert into ...."
        cmdTmp.ActiveConnection = cnx
        cmdTmp.CommandText = req
        cnx.BeginTrans
        cmdTmp.Execute
        reqId = "select @@identity"
        'dsTmp.Open req, cnx
        cnx.CommitTrans
        MsgBox reqId
    ça marche pas. Quelqu'un peut-il me filer un petit coup de main svp ?

  3. #3
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Le point essentiel d'une transaction est qu'il assemble plusieurs étapes en une seule opération tout-ou-rien. Je ne vois pas l'utilité de ta transaction.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Probablement afin d'alimenter une autre table dans le même temps et d'utiliser ce champ auto_increment (ID) comme index dans cette seconde table.

    Il existe pour MySQL une fonction interne LAST_INSERT_ID() qui renvoie ce dont tu as besoin. Peut-être trouveras-tu l'équivalent sous FM.

  5. #5
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Il serait nécessaire de préciser le SGBD.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Citation Envoyé par guiguikawa
    Le sgbd c'est filemaker
    Le prog est en VB 6

  7. #7
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    @Phifi, j'ai oublié mes lunettes

    Je ne connais pas filemaker, mais avec access l'astuce était de créer dans la table un champs supplémentaire TimeStamp (l'heure d'execution de la requête d'insertion, format hh:mm:ss).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim sqlSelect As String
    Dim TimeStamp As String
     
    TimeStamp = Now()
     
    sqlInsert = " INSERT INTO nomTable ( ..., TimeStamp ) Values (...,'" & TimeStamp & "') "
    sqlSelect = " INSERT idTable FROM nomTable  Where TimeStamp  '" & TimeStamp & "' "

Discussions similaires

  1. [Séquence] schématier une transaction qui peut survenir au cours d'un cycle
    Par ayouta.gfs dans le forum Autres Diagrammes
    Réponses: 4
    Dernier message: 28/05/2011, 17h19
  2. Savoir qu'une transaction est en cours ?
    Par marot_r dans le forum Access
    Réponses: 1
    Dernier message: 26/01/2007, 14h15
  3. Récuperer la taille & position d'une fenêtre
    Par TheDarkLewis dans le forum Windows
    Réponses: 3
    Dernier message: 20/09/2004, 22h15
  4. Récuperer structure et contenu d'une base
    Par nero dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 24/06/2004, 17h34
  5. Utilisation d'une transaction
    Par Bernard M dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/04/2004, 23h31

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