Db.execute

Résolu
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 22 févr. 2008 à 23:13
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 24 févr. 2008 à 17:03
Bonjour , pouvez-vous me dire comment faire pour faire un db.execute pour le code qui suis
ici je fait une boucle pour trouver le ticket qui porte un numéro , mais sa prend longtemps si il y a
beaucoup de ticket 40000 a 100000
Merci

Set rd = db.OpenRecordset("journalier")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop

10 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 févr. 2008 à 16:16
pardon !

la première table c' est ticket, et journalier après.
tu conserves le même shema de l' expression . Tu changes seulement le nom de la table et le nom des champs correspondants

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
23 févr. 2008 à 00:05
Salut,
Mets ta requete dans une transaction.


Sub Mettre_A_Jour()
On Error Goto Err_U
DBEngine.WorkSpaces(0).BegineTrans 'débute la ransaction
db.execute "UPDATE journalier SET journalier.mode_pay = '" &  Text5.Text & _
"' WHERE (([journalier]![nticket]='" & principale.Text2  & "'));"
DBEngine.WorkSpaces(0).CommitTrans 'valide l' opération


Exit Sub
Err_U:
DBEngine.WorkSpaces(0).RollBack  'annule toutes les mises à jour en cas d' erreur.
MsgBox Err.Description
End Sub

                         
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />


/P>
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
23 févr. 2008 à 10:49
Merci de votre réponse , mais j'ai une erreur avec votre proposition

il ne reconnait pas --> .BegineTrans

je suis en VB6 et base de donnée acces

Merci
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
23 févr. 2008 à 12:06
Bonjour,
Il a tout à fait raison de signaler l' erreur au niveau de Begin<strike>e</strike>.
C' est plutôt BeginTrans.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>

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

Posez votre question
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
24 févr. 2008 à 10:36
Bonjour Libre-Max

j'ai toujours une erreur , mais maintenent c'est
un objet est requit ????

Merci
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 févr. 2008 à 15:19
Bonjour ,
Mon intuition va pour Text5.Text

DBEngine.WorkSpaces(0).BeginTrans


db.execute "UPDATE journalier SET journalier.mode_pay = '" &  principale .Text5.Text & _
"' WHERE (([journalier]![nticket] ='" & principale.Text2  & "'));"

DBEngine.WorkSpaces(0).CommitTrans 'valide l' opération


Sinon, envoies tout le code pour que je puisse situer l' erreur.

A+







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
24 févr. 2008 à 15:55
Pour le TEXT5 c'est bien text5 et pas principale.text5

Private Sub Command2_Click()


Dim db As DAO.Database
Dim rs As DAO.Recordset
Open App.Path & "\path.dat" For Input As #1
Line Input #1, a
Close #1
Set db = OpenDatabase(a)
'db.Execute (" INSERT INTO archive ( nticket, ncaisse, [date], heure, cod_prod, design, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")
db.Execute (" INSERT INTO archive ( opa,nticket, ncaisse, [date], heure, cod_prod, design, tva, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT  caisse1.opa,caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.tva, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")
db.Execute (" INSERT INTO ticket  ( opa,nticket, ncaisse, [date], heure, cod_prod, design, tva, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT  caisse1.opa,caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.tva, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")
db.Execute (" INSERT INTO journalier ( opa,numero_dep, tva, nticket, ncaisse, [date], heure, cod_prod, design, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT  caisse1.opa,caisse1.numero_dep, caisse1.tva, caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")
db.Execute (" INSERT INTO moi (  opa,numero_dep, tva, nticket, ncaisse, [date], heure, cod_prod, design, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT  caisse1.opa,caisse1.numero_dep, caisse1.tva, caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")
db.Execute (" INSERT INTO shift ( opa,numero_dep, tva, nticket, ncaisse, [date], heure, cod_prod, design, departement, prix_achat, prix_vente, quantité, pvente, mois, année, TOTAL ) SELECT  caisse1.opa,caisse1.numero_dep, caisse1.tva, caisse1.nticket, caisse1.ncaisse, caisse1.date, caisse1.heure, caisse1.cod_prod, caisse1.design, caisse1.departement, caisse1.prix_achat, caisse1.prix_vente, caisse1.quantité, caisse1.pvente, caisse1.mois, caisse1.année, caisse1.TOTAL FROM caisse1;")


'test mode payement
'Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rd = db.OpenRecordset("ticket")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop
'------------------------------------------
Set rd = db.OpenRecordset("journalier")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop'Set rd db.OpenRecordset("moi")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop'Set rd db.OpenRecordset("archive")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop'Set rd db.OpenRecordset("shift")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop
'=======================================
'jusque ici
db.Execute (" delete caisse1.* FROM caisse1;")
Set rs = db.OpenRecordset("ccompte1")
rs.Edit
rs!compteur = rs!compteur + 1
rs!compteur_journalier = rs!compteur_journalier + 1
rs.Update
rs.Close
db.Close


principale.Timer3.Enabled = True
JouerUnWav (App.Path & "\son\cash.wav")
If Text4 = "0,00" Then Command5_Click




Unload Me


 


End Sub
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 févr. 2008 à 16:12
 à partir de
'test mode payement
tu continues dans la même procédure


'pour la table journalier
DBEngine.WorkSpaces(0).BeginTrans
db.execute "UPDATE journalier SET journalier.mode_pay = '" & _  Text5.Text & _
"' WHERE (([journalier]![nticket]='" & principale.Text2  & "'));"
DBEngine.WorkSpaces(0).CommitTrans 'valide l' opération


et tu supprimes ou tu mets en comment bien sûr les lignes
<strike>'Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rd = db.OpenRecordset("ticket")If Text5 "" Then Text5 "cash"
Do Until rd.EOF = True
If rd!nticket = principale.Text2 Then
rd.Edit
rd!mode_pay = Text5
rd.Update
End If
rd.MoveNext
Loop</strike>


tu fais de même pour les tables ticket, moi, archive,
ccompte1,shift







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
24 févr. 2008 à 16:51
un tres grandMerci

cela fonctionne et c'est quand même plus rapide que mes boucle
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 févr. 2008 à 17:03
Remerciements accèptés !
Bonne fin de soirée et bonne continuation.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
Rejoignez-nous