OVH Cloud OVH Cloud

Problème de type ?

8 réponses
Avatar
JM
Bonjour.

J'ai :

SQL = "Update PDR set Vente = DernierPrixachat * 2.5 * " & Coefmulti & "
where repere='021'"
DoCmd.RunSQL (SQL)

où Vente et DernierPrixachat sont des champs numériques dans la table PDR et
Coefmulti une variable single dans le code.

Cette ligne renvoie 0 dans le champ vente, tandis que si je remplace 2.5 par
une valeur entière, le calcul est correct.

Pour info, si je passe Coefmulti en Variant et les champs de la table en
Texte, le calcul et correct avec ou sans décimales (mais ça ne m'arrange pas
pour la suite).

Qui me dirait où je me gourje ?!

Mille mercis.

8 réponses

Avatar
Gafish
JM wrote:
Bonjour.


Bonjour,

J'ai :

SQL = "Update PDR set Vente = DernierPrixachat * 2.5 * " & Coefmulti
& " where repere='021'"
DoCmd.RunSQL (SQL)

où Vente et DernierPrixachat sont des champs numériques dans la table
PDR et Coefmulti une variable single dans le code.

Cette ligne renvoie 0 dans le champ vente, tandis que si je remplace
2.5 par une valeur entière, le calcul est correct.


Et si tu remplaces le point par la virgule ca fonctionne ? avec 2,5 ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JM
Bonjour,

non, avec une virgule, ça donne "Erreur de syntaxe dans l'instruction
UPDATE".

?


"Gafish" a écrit dans le message de
news:
JM wrote:
Bonjour.


Bonjour,

J'ai :

SQL = "Update PDR set Vente = DernierPrixachat * 2.5 * " & Coefmulti
& " where repere='021'"
DoCmd.RunSQL (SQL)

où Vente et DernierPrixachat sont des champs numériques dans la table
PDR et Coefmulti une variable single dans le code.

Cette ligne renvoie 0 dans le champ vente, tandis que si je remplace
2.5 par une valeur entière, le calcul est correct.


Et si tu remplaces le point par la virgule ca fonctionne ? avec 2,5 ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
JM
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais cela
n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...

"JM" a écrit dans le message de
news:%
Bonjour,

non, avec une virgule, ça donne "Erreur de syntaxe dans l'instruction
UPDATE".

?


"Gafish" a écrit dans le message de
news:
JM wrote:
Bonjour.


Bonjour,

J'ai :

SQL = "Update PDR set Vente = DernierPrixachat * 2.5 * " & Coefmulti
& " where repere='021'"
DoCmd.RunSQL (SQL)

où Vente et DernierPrixachat sont des champs numériques dans la table
PDR et Coefmulti une variable single dans le code.

Cette ligne renvoie 0 dans le champ vente, tandis que si je remplace
2.5 par une valeur entière, le calcul est correct.


Et si tu remplaces le point par la virgule ca fonctionne ? avec 2,5 ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr









Avatar
Gafish
JM wrote:
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais
cela n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...



Je me suis mis dans des conditions similaires, j'ai fait la même requête, ca
passe bien.
Ton champ Vente est bien en réel double et pas en integer ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
JM
Tu te donnes beaucoup de mal. Je suis confus.

Oui, tous les champs numériques sont en Réel double...

Merci.


"Gafish" a écrit dans le message de
news:
JM wrote:
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais
cela n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...



Je me suis mis dans des conditions similaires, j'ai fait la même requête,
ca

passe bien.
Ton champ Vente est bien en réel double et pas en integer ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
JM
Par contre, le champ DernierPrixachat, qui est bien numérique dans la table
PDR, est lui même renseigné par une requête Update à partir de données d'une
table SQL Server dans laquelle le champ (origine) est de type Float. J'ai
pensé que ça pouvait être la cause du problème (encore que...) mais je vois
pas bien pourquoi ça fonctionne avec des valeurs entières et pas avec de
décimales (?).

Dans la table PDR, le champ DernierPrixachat a des valeurs correctes,
décimales.

Je dubite...

:-)


"Gafish" a écrit dans le message de
news:
JM wrote:
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais
cela n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...



Je me suis mis dans des conditions similaires, j'ai fait la même requête,
ca

passe bien.
Ton champ Vente est bien en réel double et pas en integer ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Jessy Sempere [MVP]
Bonjour

Je pense que ça vient du fait que tu multiplis 2 types de données
différents.
Cette multiplication a pour impacte de transformer tes données doubles en
donnée single.

Essais de faire :
SQL = "Update PDR set Vente = cDbl(DernierPrixachat) * cDbl(2.5) * " &
cdbl(Coefmulti) & "Where repere='021'"
DoCmd.RunSQL (SQL)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"JM" a écrit dans le message news:

Par contre, le champ DernierPrixachat, qui est bien numérique dans la
table

PDR, est lui même renseigné par une requête Update à partir de données
d'une

table SQL Server dans laquelle le champ (origine) est de type Float. J'ai
pensé que ça pouvait être la cause du problème (encore que...) mais je
vois

pas bien pourquoi ça fonctionne avec des valeurs entières et pas avec de
décimales (?).

Dans la table PDR, le champ DernierPrixachat a des valeurs correctes,
décimales.

Je dubite...

:-)


"Gafish" a écrit dans le message de
news:
JM wrote:
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais
cela n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...



Je me suis mis dans des conditions similaires, j'ai fait la même
requête,


ca
passe bien.
Ton champ Vente est bien en réel double et pas en integer ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr









Avatar
JM
Bonjour.

Oui, je n'ai plus le problème avec la conversion en Dbl.
Merci à vous deux.
J'ai un paquet de lignes à modifier !!!

Bravo.

"Jessy Sempere [MVP]" a écrit dans le message de
news:42ef3d38$
Bonjour

Je pense que ça vient du fait que tu multiplis 2 types de données
différents.
Cette multiplication a pour impacte de transformer tes données doubles en
donnée single.

Essais de faire :
SQL = "Update PDR set Vente = cDbl(DernierPrixachat) * cDbl(2.5) * " &
cdbl(Coefmulti) & "Where repere='021'"
DoCmd.RunSQL (SQL)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"JM" a écrit dans le message news:

Par contre, le champ DernierPrixachat, qui est bien numérique dans la
table

PDR, est lui même renseigné par une requête Update à partir de données
d'une

table SQL Server dans laquelle le champ (origine) est de type Float.
J'ai


pensé que ça pouvait être la cause du problème (encore que...) mais je
vois

pas bien pourquoi ça fonctionne avec des valeurs entières et pas avec de
décimales (?).

Dans la table PDR, le champ DernierPrixachat a des valeurs correctes,
décimales.

Je dubite...

:-)


"Gafish" a écrit dans le message de
news:
JM wrote:
Ca me semble un peu tordu, mais je ne suis pas spécialiste !

Je pourrais laisser le champ Vente en texte, là ça fonctionne, mais
cela n'est pas très logique.
Par exemple, ça me bloque pour faire :

SQL = "UPDATE PDR set Vente = Vente * 10 Where Vente < 1"

Avec Vente en texte, ça ne veut rien dire.

Bigre...



Je me suis mis dans des conditions similaires, j'ai fait la même
requête,


ca
passe bien.
Ton champ Vente est bien en réel double et pas en integer ?

Arnaud
--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr