Bonjour

J'ai un souci avec une paire de requetes dans une transaction. Le problème est qu'elles ne s'exécutent pas ou du moins elles ne crééent pas d'enregistrements (Cela concerne les 2 requêtes INSERT, les 2 premières de la transaction, voir code ci dessous). J'ai d'abord pensé que ca venait des "if" mais non j'ai testé avec des msgbox on passe bien au bon endroit. J'ai ensuite pensé à un problème sur la requete. J'ai copié/collé le résultat d'un debug.print dans l'analyseur de requetes. La requete s'execute correctement et créé un enregistrement. J'ai ensuite enlevé le "S" dans "INSERT" pour générer une erreur et voir si access executait la requête. Il me signale la faute sur le cnx.execute donc il l'exécute bien. J'ai également vérifié qu'on "commit" bien la transaction à la fin

Si vous avez des suggestions, elles sont les bienvenues

Merci d'avance pour vos réponses

Voici le code:

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
'Début de la transaction
        cnx.BeginTrans
               If Me!Court Then
 
                SQL = "INSERT INTO Article (art_base, art_bar, art_artcateg, art_tj, art_modif, art_visible, art_controle, art_fixe1, art_categ, art_date, art_heure, art_ddeur, art_fixe2, art_dde, art_fixe3, art_duree, art_cout) "
                SQL = SQL & " VALUES ('" & Me!SltBase.Value & "', " & Me!SltBarSup.Value & ", 1, '" & Me!SltTj.Value & "', 1, 1, " & Me!SltTc.Value & ", '01F', '" & Me!SltBarSup.Column(1) & "', '0qqq', '" & Me!SltTh.Value & "', '" & Me!SltDdeur.Column(0) & "', 'F', '" & Me!SltDde.Column(0) & "', 'FFFFFF', '" & Me!Duree.Value & "', '" & Me!Cout.Value & "');"
 
                cnx.Execute SQL
                erreur = erreur + Err.Number
 
            Else
 
                If Me!Long Then
 
                    SQL = "INSERT INTO Article (art_base, art_bar, art_artcateg, art_tj, art_modif, art_visible, art_controle, art_fixe1, art_categ, art_date, art_heure, art_ddeur, art_fixe2, art_dde, art_fixe3, art_duree, art_cout, art_ccd, art_typecom, art_fixe4) "
                    SQL = SQL & " VALUES ('" & Me!SltBase.Value & "', " & Me!SltBarSup.Value & ", 1, '" & Me!SltTj.Value & "', 1, 1, " & Me!SltTc.Value & ", '01F', '" & Me!SltBarSup.Column(1) & "', '0qqq', '" & Me!SltTh.Value & "', '" & Me!SltDdeur.Column(0) & "', 'F', '" & Me!SltDde.Column(0) & "', 'FFFFFF', '" & Me!Duree.Value & "', '" & Me!Cout.Value & "', '" & Me!Ccd & "', '" & Me!Type2com & "', 'FFFFFFFF');"
 
                    cnx.Execute SQL
                    erreur = erreur + Err.Number
 
                End If
            End If
 
            cnx.Execute "DELETE FROM Article WHERE art_bar=" & Me!SltBarSup.Value & ";"
            erreur = erreur + Err.Number
 
            cnx.Execute "DELETE FROM bareme WHERE bar_id=" & Me!SltBarSup.Value & ";"
            erreur = erreur + Err.Number
 
        'Gestion des erreurs
        If erreur <> 0 Then
            cnx.RollbackTrans
            MsgBox "Une erreur s'est produite, la suppression a été annulée", vbCritical, "Erreur"
        Else
            cnx.CommitTrans
            MsgBox "Le barème a été supprimé avec succès", vbInformation, "Félicitations"
        End If
edit: en fait ca ne marche que si je sors les requêtes de la transaction....
La base est une base SQL Server 2000, j'utilise Access 2003 (.adp)