SVP Cn.Execute

said_dias_01 Messages postés 103 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 30 décembre 2017 - 26 mars 2007 à 13:44
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 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

6 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 13:56
tu veux rendre fou ton générateur ...?
A ma connaissance, c' est pas possible...
et ne demande pas pourquoi...
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 18:04
Bonjour Jack,


je ne dis pas !
mais Je crois que, sans passer par les tests,
on peut faire ceci :


Sub ...


On Error Goto Err_Trans


maDB.BeginTrans   ' Début de la transaction
   Cn.Execute "INSERT ...", dbFailOnError
    
   Cn.Execute "DELETE ...", , dbFailOnError
    
   Cn.Execute "UPDATE ...", , dbFailOnError
    
msDB.CommitTrans 
'ne valide si on arrive au troisième niveau sans encombre


Exit Sub
 
Err_Trans:
msDB.RollBack 'annule tout quelque soit le niveau ou s' est produite l' erreur


End Sub
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 18:06
'ne valide que si ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
said_dias_01 Messages postés 103 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 30 décembre 2017 1
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"

ça marche bien


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
27 mars 2007 à 12:41
Bonjour,
Eh bien alors , à partir de maintenant, je saurais que c' est possible.
La prochaine fois je réponderai : SAID A DIT...


Reste à savoir ce qui se passe si ,dans l' exemple, l' une des requetes échoue.
Si tu pouvais nous en dire plus...
0
Rejoignez-nous