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

VBA Access Discussion :

Transaction avec DoCmd.runsql ??? [À faire]


Sujet :

VBA Access

  1. #21
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Le lien te renvois vers begintrans ...
    parce que c'est là que tu trouveras le concept de transaction.
    Mais access gère en interne la notion de transactions.
    En fait, si tu mets TRUE, l'exécution de la requête se fait à la fin de la requête. si tu mets FALSE l'exécution se fait ligne à ligne (enfin, c'est ce que j'ai compris)...

  2. #22
    Membre éprouvé
    Avatar de Gandalf24
    Homme Profil pro
    Integrateur Odoo
    Inscrit en
    Mai 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Integrateur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 481
    Points : 1 013
    Points
    1 013
    Par défaut
    Et le begintrans s'applique a un object Connection (que j'ai jamais utilisé)...
    Bon je vais matter de ce pas et faire quelques tests pour essayer de comprendre...
    A +

  3. #23
    Membre éprouvé
    Avatar de Gandalf24
    Homme Profil pro
    Integrateur Odoo
    Inscrit en
    Mai 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Integrateur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 481
    Points : 1 013
    Points
    1 013
    Par défaut
    Ca démarre mal... Connection est un objet DAO ????!!!!

    En fait la problème persiste, Begintrans ne joue que avec des objets DAO-ADO donc j'en conclue logiquement que le deuxieme argument de runsql fait appel à un objet dao...( a moins que l'aide de access ne nous dit pas tout... (no comment))
    Zemn : J'ai lu ton poste sur comment poser une question, et je suis désolé de te dire qu'actuellement je ne me sens pas l'ame du hacker qui va titiller la chose pour comprendre(pb de temps). Mais je te remercie pour la réponse en utilisant le execute (qui marche très bien) et profite pour saluer et remercier les hackers...
    A+

  4. #24
    Rédacteur
    Avatar de sinarf
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 210
    Points : 493
    Points
    493
    Par défaut
    Donc on s'est bien laisser avoir par un manque de clareté de l'aide, et la solution que tu nous propose ZeMenace nous l'avions trouvé, mais c'est vraiment ce message de l'aide d'access que l'on voulait expliquer.
    Moi je pense que la confusion viens d'un lien dans l'aide de docmd.runSQL sur le mot transaction et qui ne devrait pas se trouver là (peut-etre géneré automatiquement). Quoique ya pas que ça ....
    Donc en fait il est impossible d'utiliser les transactions dans ce cas. Il faut utiliser les commandes DAO ou ADO avec les methodes de transactions correspondantes.

    Je savais bien que j'apprendrais quelque chose de ce post .
    mais j'ai quand meme l'impression qu'il manque un element pour que je comprenne tout.

  5. #25
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Ben vous n'avez pas tout compris je pense...
    La transaction est un concept de base de données. POINT FINAL.
    Access Gère les transactions.
    Docmd est un objet Access. On peut exécuter une requête à travers Access dans le cadre d'une transaction ou pas.

    BeginTrans est une méthode DAO (dans notre cas). L'exécution de la requête doit donc se faire en DAO pour une transaction déclarée en DAO.

    C'est tout.
    Vous voulez travailler sur 2 bibliothèques différentes en faisant comme s'il s'agissait de la même. C'est pour cela que ca ne va pas.

  6. #26
    Rédacteur
    Avatar de sinarf
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 210
    Points : 493
    Points
    493
    Par défaut
    Mais pour que Access gère les transaction il faut que les methodes les gérant existes, non ? Hors ces methodes n'ont pas l'air d'exister, (je ne les ai pas trouvé dans l'explorateur d'objet).
    Dans l'aide en dehors des points deja signaler plus haut il y des exemples intitulés :
    BeginTrans, CommitTrans, Rollback, méthodes, exemple (DAO)
    Exemple des méthodes BeginTrans, CommitTrans et Rollback (Microsoft Access)


    Hors ces 2 exemples utilises des recordsets qui sont des objets DAO (Access 97).

    Voila, je cherche la petite bête étant donné que je sais comment faire autrement mais comme tu dis il y a quelque chose que je ne comprends pas. Ceci dit, avant ce post, je savais juste que les transactions existaient, aujourd'hui, je saurais les mettre en place.
    Il n'y a plus de point bloquant juste une saine curiosité pas totalement satisfaite.

  7. #27
    Membre éprouvé
    Avatar de Gandalf24
    Homme Profil pro
    Integrateur Odoo
    Inscrit en
    Mai 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Integrateur Odoo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 481
    Points : 1 013
    Points
    1 013
    Par défaut
    Sinarf :
    Bon résumé de ce que je pense

  8. #28
    Futur Membre du Club

    Inscrit en
    Novembre 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 2
    Points : 9
    Points
    9
    Par défaut
    Kestion?

    Pourquoi vous servez vous des transactions?
    Quel interet?

    Pkoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      DBEngine.BeginTrans
        DoCmd.RunSQL "UPDATE Personnes SET f1 = 4"
      DBEngine.Rollback
    plutot ke :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Currentdb.Execute "UPDATE Personnes SET f1 = 4"

  9. #29
    Rédacteur
    Avatar de sinarf
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 210
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par extros
    Pourquoi vous servez vous des transactions?
    Moi je les utilises pas ... pour le moment

    Le code que tu montres est un code de test il n'a aucun sens dans une situation réelle. En plus, nous avons montrer que ce code ne marchais pas. Relis bien les messages précedents
    Citation Envoyé par extros
    Quel interet?
    les raisons peuvent etre multiples mais la principale, je pense, c'est lorsque tu lances plusieurs traitements d'affil, cela permet de dire soit tout se passe bien et on valide la transaction, soit on annule tout.

    Par exemple :
    lors d'une transaction financière :
    Tu debite le compte emeteur
    Tu credite le compte recepteur et là, tu as un problème de reseau impossible de crediter le compte.
    Tu as interet à pouvoir annuler le debit sinon tu risque d'avoir un problème et on va te demander ou est passé l'argent.

    Voila j'espère avoir repondu a ta question.
    Ah oui au fait ce compte c'était celui d'un Yakuza, planque toi il te cherche

  10. #30
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut transactions
    salut,

    tout à fait, les transactions servent à sécuriser les données. si tu fais un "update...." sans démarrer une transaction, dès que le traitement est exécuté, c'est trop tard pour revenir en arrière.

    Tandis qu'avec une transaction (oracle par ex.) tu fais un truc du genre

    update....(la transaction démarre automatiquement en oracle)

    if(.......) then
    commit (valide la transaction)
    else
    rollback (restaure l'ancienne image des données)

    tu peux aussi créer des savepoints qui te permettent de "commiter" jusqu'à un savepoint "X" sans commiter toute la transaction.

    Bref, la gestion de transaction est indispensable si tu veux renforcer l'intégrité de tes données ainsi qu'éviter des erreurs.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2003] DoCmd.RunSQL avec INSERT INTO
    Par Invité dans le forum IHM
    Réponses: 9
    Dernier message: 18/09/2012, 10h07
  2. [AC-2003] j'ai un pb avec docmd.runsql
    Par luc.guiavarch dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/12/2010, 14h50
  3. [AC-2003] Requête sql avec méthode DoCmd.Runsql bloqué dans une transaction
    Par rana dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2010, 14h20
  4. probleme avec DoCmd.RunSQL
    Par Didier77 dans le forum Access
    Réponses: 5
    Dernier message: 21/07/2006, 17h09
  5. Les transactions avec Delphi & InterBase
    Par Redhouane dans le forum Bases de données
    Réponses: 5
    Dernier message: 31/12/2004, 16h34

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