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

Access Discussion :

[SQL ACCESS] La gestion des transactions ne peut être appliquée aux tables liées ?


Sujet :

Access

  1. #1
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut [SQL ACCESS] La gestion des transactions ne peut être appliquée aux tables liées ?
    .
    Dans l'aide "Access 2013 developer documentation", il est précisé dans la rubrique ci-dessous au paragraphe "Remarks"

    Transactions are not supported for linked tables.
    Sauriez-vous m'indiquer si, en effet, c'est le cas ?

    Je suis franchement étonné de lire une telle chose...
    .

    Nom : 2023-12-01 16_38_49-Access 2013 developer documentation.png
Affichages : 136
Taille : 21,6 Ko

    Nom : 2023-11-30 18_30_11-Access 2013 developer documentation.png
Affichages : 160
Taille : 26,6 Ko

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    Pas du tout étonné.

    On peut contourner en exécutant le SQL via DAO (ou ADO) directement sur la base distante.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Merci Loufab de la précision concernant la gestion des transactions dans le cadre des tables liées, et pour la solution de contournement via DAO ou ADO.

    Mais, je me pose la question de savoir lorsque des tables liées sont contenues dans une base de données externe, comme par exemple MySQL, les ordres DML soumis depuis ACCESS sont pris en compte, exécutés et gérés par le moteur du SGBDR cible. Il m'apparait logique de penser qu'un ordre BEGIN TRANSACTION, COMMIT ou ROLLBACK soit traité de la même manière qu'un ordre DML quelconque (SELECT, INSERT, UPDATE, DELETE).

    Reste en effet le recours à DAO ou ADO du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.Execute "BEGIN TRANSACTION"
    , etc.
    .

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Dans ce cas utilise ADO et non pas DAO.

    Le currentdb.execute avec une transaction est totalement illogique.

    Une transaction doit obligatoirement être dans le même thread SQL. Avec ADO on peut utiliser les méthodes de transaction ou bien choisir d'utiliser l'instruction SQL. Tout dépend de ce que tu as à réaliser.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    .
    Je voudrais dans une transaction créditer un compte et en débitant un autre du même montant, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    CurrentDb.Execute "BEGIN TRANSACTION;"
    CurrentDb.Execute "UPDATE Comptes SET MtCompte = MtCompte + 100 WHERE IdCompte = 1;"
    CurrentDb.Execute "UPDATE Comptes SET MtCompte = MtCompte - 100 WHERE IdCompte = 2;"
    CurrentDb.Execute "COMMIT;"
    Est-ce possible de la sorte ?
    .

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    apparemment oui mais il faut l'exécuter dans un espace de travail comme dans l'exemple donné ici

  7. #7
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    .
    Merci pour le lien : https://learn.microsoft.com/fr-fr/of...ans-method-dao

    L’exemple suivant montre comment utiliser une transaction dans un espace de travail Data Access Objects (DAO).
    Exemple de code fourni par Microsoft Access 2010 Programmer’s Reference.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
        Public Sub TransferFunds()
            Dim wrk As DAO.Workspace
            Dim dbC As DAO.Database
            Dim dbX As DAO.Database
     
            Set wrk = DBEngine(0)
            Set dbC = CurrentDb
            Set dbX = wrk.OpenDatabase("e:\books\acc2007vba\myDB.accdb")
     
            On Error GoTo trans_Err
     
            'Begin the transaction
     
            wrk.BeginTrans
     
            'Withdraw funds from one account table
            dbC.Execute "INSERT INTO tblAccounts ( Amount, Txn, TxnDate ) SELECT -20, 'DEBIT', Date()", dbFailOnError
     
            'Deposit funds into another account table
            dbX.Execute "INSERT INTO tblAccounts ( Amount, Txn, TxnDate ) SELECT 20, 'CREDIT', Date()", dbFailOnError
     
            'Commit the transaction
            wrk.CommitTrans dbForceOSFlush
     
        trans_Exit:
            'Clean up
            wrk.Close
            Set dbC = Nothing
            Set dbX = Nothing
            Set wrk = Nothing
            Exit Sub
     
        trans_Err:
            'Roll back the transaction
            wrk.Rollback
            Resume trans_Exit
     
        End Sub
    .

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2008, 08h20
  2. Réponses: 2
    Dernier message: 28/05/2008, 12h17
  3. Réponses: 3
    Dernier message: 21/02/2006, 11h44
  4. Réponses: 1
    Dernier message: 23/10/2005, 00h55
  5. Réponses: 3
    Dernier message: 24/05/2005, 08h19

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