Syntaxe autour d'une variable de type single dans une requête

Résolu
Signaler
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
-
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
-
Bonjour,

Je n'arrive pas à passer une requête qui plante au niveau d'une varible de type single.
Voici des morceaux du code:

'Je déclare une variable Somme de type single
Dim Somme as single
'Cette variable récupère ensuite une valeur numérique entière ou décimal

'La variable intervient ensuite dans une requête de mise à jour
Rs_Com.Open "UPDATE COMMANDE SET Mont_Com= Mont_Com - '" & Somme & "' WHERE Num_Com=" & Numero & "", Cn, adOpenDynamic, adLockOptimistic

Ecrite de cette façon, la requête passe quand le contenu de Somme est en entier et renvoi le message d'erreur suivant quand le contenu ne l'est pas : Erreur de conversion de données Varchar en Numéric
En enlevant les ', les entiers passent mais ca bloque ensuite au chiffre qui suit la virgule, le message d'erreur est alors : Syntaxe incorrect vers 1 (si 1 est le chiffre après la virgule)
Et en mettant des parenthèse :
Rs_Com.Open "UPDATE COMMANDE SET Mont_Com= (Mont_Com - " & Somme & ") WHERE Num_Com=" & Numero & "", Cn, adOpenDynamic, adLockOptimistic
le message d'erreur est : syntaxe incorrecte vers ','

Je n'arrive à trouver la syntaxe correcte...

Merci d'avance

9 réponses

Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
Ca y est, trouvé
il fallait effectué une conversion mais dans l'autre sens avec Str:Rs_Com.Open "UPDATE COMMANDE SET Mont_ComMont_Com - " & Str(Somme) & " WHERE Num_Com" & Numero & "", Cn, adOpenDynamic, adLockOptimistic
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
34
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
24 mai 2010
1
Rs_Com.Open "UPDATE COMMANDE SET Mont_Com= Mont_Com - " & "'" & LaSomme & "'" & " WHERE Num_Com=" & Numero & "", Cn, adOpenDynamic, adLockOptimistic
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
Le message d'erreur est le même : Erreur de conversion de données Varchar en numérique...

Une autre idée?
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Salut,

Essaie ça :
Rs_Com.Open "UPDATE COMMANDE SET Mont_Com Mont_Com - " & LaSomme & " WHERE Num_Com " & Numero, Cn, adOpenDynamic, adLockOptimistic

Cordialement, CanisLupus
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
Non, comme je l'ai dit dans mon message initial, ça ne marche pas non plus, ca met le message suivant : syntaxe incorrect vers 4 (si 4 est le chiffre après la virgule).
J'ai essayé d'effectuer des conversions avec Hex() ou Oct() mais dans ce cas cela me transforme le décimal en entier...
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Excuses, mais il aurait fallu que tu précises que ton champ Mont_Com était un champ texte. Tu aurais eu ta réponse plus rapidement.
Maintenant, si tu gères des sommes, le format texte n'est pas trop adapté dans une base de données. Sinon, tu vas avoir d'autres problèmes car les calculs sur des champs texte peuvent produire des résultats plus que bizarres.
Mais bon, c'est ton choix......

Bonne prog

Cordialement, CanisLupus
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
Bien justement non, Mont_Com est un champ décimal (la base est sous SQL Serveur).
c'est pour cela que j'ai trouvé l'erreur bizarre...
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
En effet, une erreur bizarre, à approfondir.... Je ne connais pas suffisamment SQL Server, seulement Access, Informix et Oracle. Mais je vais étudier ça au cas où...

Bonne prog

Cordialement, CanisLupus
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
Merci en tout cas...