probleme requete SQL dans VBA
Bonjour,
j'ai un message d'erreur lors de l'execution d'un procédure dans VBA que je n'arrive pas à résoudre. Pouvez vous m'aider svp ?
Le message est "erreur d'execution 3049"
En fait l'objectif de cette procédure est de
effacer les données contenues dans une table (Wbudgetgroup) puis de copier les données contenues dans une requete (Wpricinggroup) et de les coller dans la table (Wbudgetgroup). ensuite je complete un champ par le calcul grace au code qui suit.
j'effectue cela la premiere fois, _ça fonctionne_ ensuite je refait la meme chose mais pour copier les donnes de la requete (Wpricinggroup) dans une autre table (Wbudgetunitgroup)
et là ça me met erreur 3049.
pouvez vous m'aider, y a t il dans la repétition de ce processus qq chose qui manque ?
Merci pour votre retour,
Cdlt
ci dessous le code utilisé
Code:
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| '*********************************************
'effectue la meme opération opur generer le comparateur de prix graphique
'*********************************************************DoCmd.SetWarnings False 'bloque les messages d'avertissement
DoCmd.RunSQL "DELETE * FROM Wbudgetgroup;"
DoEvents
DoCmd.RunSQL " INSERT INTO Wbudgetgroup SELECT * FROM Wpricinggroup;"
DoCmd.SetWarnings False
'calcul du prix de chaque livraison en automatique
'concerne le traitement de la requete budgetgroupreq pour les flux groupage
Set rst = CurrentDb.OpenRecordset("Wbudgetgroupreq", dbOpenDynaset, dbDenyWrite)
Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
With rst
.MoveLast
.MoveFirst
For I = 1 To .RecordCount ' Il existe d'autre moyens pour
' passer sur tous les enregistrements
.Edit
If !poids <= 3000 Then
If !poids <= 1500 Then
If !poids <= 1000 Then
If !poids <= 500 Then
If !poids <= 100 Then
If !poids <= 90 Then
If !poids <= 80 Then
If !poids <= 70 Then
If !poids <= 60 Then
If !poids <= 50 Then
If !poids <= 40 Then
If !poids <= 30 Then
If !poids <= 20 Then
If !poids <= 10 Then
!prixauto = !prixkg10
GoTo wlasuite
End If
!prixauto = !prixkg20
GoTo wlasuite
End If
!prixauto = !prixkg30
GoTo wlasuite
End If
!prixauto = !prixkg40
GoTo wlasuite
End If
!prixauto = !prixkg50
GoTo wlasuite
End If
!prixauto = !prixkg60
GoTo wlasuite
End If
!prixauto = !prixkg70
GoTo wlasuite
End If
!prixauto = !prixkg80
GoTo wlasuite
End If
!prixauto = !prixkg90
GoTo wlasuite
End If
!prixauto = !prixkg100
GoTo wlasuite
End If
!prixauto = !prixkg500 / 100 * !poids
GoTo wlasuite
End If
!prixauto = !prixkg1000 / 100 * !poids
GoTo wlasuite
End If
!prixauto = !prixkg1500 / 100 * !poids
GoTo wlasuite
End If
!prixauto = !prixkg3000 / 100 * !poids
GoTo wlasuite
End If
wlasuite:
.Update
.MoveNext
Next I
End With
Set rst = Nothing
MsgBox ("la requete Wbudget pour les flux GROUPAGE a été mise a jour pour générer le graphique comparateur de prix groupage")
'*********************************************************'effectue la meme opération opur generer le comparateur de prix UNITAIR E GROUPAGE
'*********************************************************DoCmd.SetWarnings False 'bloque les messages d'avertissement
DoCmd.RunSQL "DELETE * FROM Wbudgetunitgroup;"
DoEvents
DoCmd.RunSQL " INSERT INTO Wbudgetunitgroup SELECT * FROM Wpricinggroup;"
DoCmd.SetWarnings False
'calcul du prix de chaque livraison en automatique
'concerne le traitement de la requete budgetgroupreq pour les flux groupage
Set rst = CurrentDb.OpenRecordset("Wbudgetunitgroup", dbOpenDynaset, dbDenyWrite)
Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
With rst
.MoveLast
.MoveFirst
For I = 1 To .RecordCount ' Il existe d'autre moyens pour
' passer sur tous les enregistrements
.Edit
If !poids <= 3000 Then
If !poids <= 1500 Then
If !poids <= 1000 Then
If !poids <= 500 Then
If !poids <= 100 Then
If !poids <= 90 Then
If !poids <= 80 Then
If !poids <= 70 Then
If !poids <= 60 Then
If !poids <= 50 Then
If !poids <= 40 Then
If !poids <= 30 Then
If !poids <= 20 Then
If !poids <= 10 Then
!prixauto = !prixkg10 / !poids
GoTo wlasuite
End If
!prixauto = !prixkg20 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg30 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg40 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg50 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg60 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg70 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg80 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg90 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg100 / !poids
GoTo ulasuite
End If
!prixauto = !prixkg500 / 100
GoTo ulasuite
End If
!prixauto = !prixkg1000 / 100
GoTo ulasuite
End If
!prixauto = !prixkg1500 / 100
GoTo ulasuite
End If
!prixauto = !prixkg3000 / 100
GoTo ulasuite
End If
ulasuite:
.Update
.MoveNext
Next I
End With
Set rst = Nothing
MsgBox ("la requete WUNIT GRoupage pour les flux GROUPAGE a été mise a jour pour générer le graphique comparateur de prix groupage")
End Sub |