Je dispose de trois tables T_DevisFact, T_PostProduction, T_PriseDeVues. Elles sont jointes par le champ CodeDevis.
Le champ TotalDevis est donc le Cumul des deux champs TotalPostProd et TotalPdV. Ces trois champs sont de type "monétaire"
Je mets à jour via un requête UPDATE le TotalDevis suivant la procédure suivante :
J'ai toujours une erreur lors de l'exécution de la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Sub CalculMontantDevis(NumDevis As Long) Dim l_curTotalPostProd As Variant, l_curTotalPdV As Variant l_curTotalPostProd = CVar(Nz(DSum("TotalRetouche", "T_PostProduction", "CodeDevis = " & NumDevis), 0)) l_curTotalPdV = Nz(DSum("MontantPdV", "T_PriseDeVues", "CodeDevis = " & NumDevis), 0) ' Mise à jour de la table T_DevisFact l_strSql = "UPDATE T_DevisFact SET MontantDevis = " & l_curTotalPdV + l_curTotalPostProd & " WHERE CodeDevis = " & NumDevis Debug.Print l_strSql CurrentDb.Execute l_strSql, dbFailOnError ' Mise à jour du Sous-Formulaire de la liste des devis du Client Forms.F_Gestion.lstDevisFact.Requery End Sub
J'ai donc inclus une instruction Debug.Print dans le code. Ce qui me donne le résultat suivant :Erreur de Syntaxe dans l'instruction UPDATE
On peut donc se rendre compte que malgré le type de données, le séparateur décimal est une virgule. Et c'est là, le problème. () Il me semblait que lors de l'exécution de VBA, le séparateur était automatiquement remplacé par un point.UPDATE T_DevisFact SET MontantDevis = 642,8572 WHERE CodeDevis = 22
Je ce comprends pas, je tourne en rond depuis deux jours. Les options de régionales correspondent bien au séparateur "virgule".
Si vous avez une idée, je suis preneur.
Merci beaucoup à tous
Partager