said_dias_01
Messages postés103Date d'inscriptiondimanche 20 mars 2005StatutMembreDernière intervention30 décembre 2017
-
26 mars 2007 à 13:44
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
27 mars 2007 à 12:41
Slt,
Est ce que je peu exécuter plusieurs requêtes action au même tempe avec la méthode « Cn.Execute » et comment ?
Exemple : Cn.Execute « INSERT ……… , DELETE …….. , UPDATE …………….. »
par
Merci
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 mars 2007 à 17:37
Salut Said
En fait, il n'est pas possible de donner plusieurs ordres en même temps, tu t'en ai aperçu.
Pour résoudre le problème, il suffit de faire autant de cn.Execute que de requètes :
Cn.Execute "INSERT ..."
Cn.Execute "DELETE ..."
Cn.Execute "UPDATE ..."
Dans ton exemple, si tu souhaites annuler le INSERT et le DELETE au cas où le UPDATE se passe mal, il te suffit d'ouvrir une TRANSACTION :
(les ordres de transactions se font sur la DB et pas sur la connexion)
On Error Goto Annule
maDB.BeginTrans ' Début de la transaction
Cn.Execute "INSERT ...", r
' L'insert doit renvoyer 1 si la fiche a été insérée
If r <> 1 Then Goto Annule
Cn.Execute "DELETE ...", r
' Le Delete doit renvoyer un chiffre supérieur à 0 s'il a bien supprimé des données
If r = 0 Then Goto Annule
Cn.Execute "UPDATE ...", r
' Le Update doit renvoyer un chiffre supérieur à 0 s'il a bien mis à jour des données
If r = 0 Then Goto Annule
msDB.CommitTrans ' Valide toutes les actions depuis le BeginTrans
Exit Sub
...
Annule:
maDB.RollbackTrans ' Annule les actions faites depuis le BeginTrans
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
said_dias_01
Messages postés103Date d'inscriptiondimanche 20 mars 2005StatutMembreDernière intervention30 décembre 20171 27 mars 2007 à 12:00
Salut,
Merci Jack pour la réponse et surtout l’idée de la transactionet toi aussi chaibat pour
l’abréviation
Pour chaibat , oui c' est pas possible ,mais si la bade de donnée sous MS ACCES mais si vous avez une BD SQL SERVER ça marche bien , et voila ma faute j pas précisé ma BD elle est sous SQL SERVER
et voila la réponse (BD SQL SERVER)
Cn.Execute "requête1(espace) requête2 (espace) requête3.........requêteN"