OVH Cloud OVH Cloud

syntaxe VBA update

3 réponses
Avatar
Cyrille
bonjour

j'essaye de faire une requete sql en vba sous cette forme

Dim strsql As String
Total = DSum("[MontantFacture]", "RTotalFact",
"[Formulaires]![Cheques]![SFListeFactures].[Form]![NumCheque]")
strsql = "UPDATE Cheques SET Cheques.MontantTotalFact = " & Total & " WHERE
(Cheques.NumCheque=Me.NumCheque);"
CurrentDb.Execute strsql

la variable "Total" donne stocke bien le résultat mais j'ai une erreur 3601,
erreur de syntaxe surement sur l'execution de la requete (CurrentDb.Execute
strsql)

Si quelqu'un voit l'erreur.

Merci d'avance

3 réponses

Avatar
Eric
Bonjour,

Je pense que ta variable total contient une valeur monétaire avec pour
séparateur décimal la virgule, ce qui génère ton erreur de syntaxe.
Si c'est le cas, alors mets :
strsql = "UPDATE Cheques SET Cheques.MontantTotalFact = " &
Replace(Total,",",".") & " WHERE Cheques.NumCheque=" & Me.NumCheque & ";"

De plus il faut sortir de ta chaine sql, la variable Me.NumCheque
supposée numérique. Si texte, alors modifier le whzere comme suit:
... & " WHERE Cheques.NumCheque='" & Me.NumCheque & "';"

La fonction REPLACE() uniquement à partir d'Access2K, si Access97 voir
sur le site de Jessy :
http://access.jessy.free.fr/htm/Equivalence/fReplace.htm

bonjour

j'essaye de faire une requete sql en vba sous cette forme

Dim strsql As String
Total = DSum("[MontantFacture]", "RTotalFact",
"[Formulaires]![Cheques]![SFListeFactures].[Form]![NumCheque]")
strsql = "UPDATE Cheques SET Cheques.MontantTotalFact = " & Total & " WHERE
(Cheques.NumCheque=Me.NumCheque);"
CurrentDb.Execute strsql

la variable "Total" donne stocke bien le résultat mais j'ai une erreur 3601,
erreur de syntaxe surement sur l'execution de la requete (CurrentDb.Execute
strsql)

Si quelqu'un voit l'erreur.

Merci d'avance


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Cyrille
ca marche parfaitement

ca peut servir à d'autres que access utilise dans ce cas le . plutot que la
, dans les procedures

merci encore


bonjour

j'essaye de faire une requete sql en vba sous cette forme

Dim strsql As String
Total = DSum("[MontantFacture]", "RTotalFact",
"[Formulaires]![Cheques]![SFListeFactures].[Form]![NumCheque]")
strsql = "UPDATE Cheques SET Cheques.MontantTotalFact = " & Total & " WHERE
(Cheques.NumCheque=Me.NumCheque);"
CurrentDb.Execute strsql

la variable "Total" donne stocke bien le résultat mais j'ai une erreur 3601,
erreur de syntaxe surement sur l'execution de la requete (CurrentDb.Execute
strsql)

Si quelqu'un voit l'erreur.

Merci d'avance


Avatar
Eric
re,

C'est pas Access mais SQL. La syntaxe SQL est en US donc le séparateur
décimal est le . (point) ; d'ailleurs, en SQL la virgule permet de
séparer les noms de champs, de tables c'est pourquoi elle ne peut pas
servir aussi de séparateur décimal.

ca marche parfaitement

ca peut servir à d'autres que access utilise dans ce cas le . plutot que la
, dans les procedures

merci encore



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr