Replace dans SQL via VB6

[Résolu]
Signaler
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
En VB6, je code ceci :
   Rqte "select replace(vl, ".", ",") from fonds where designation 'BTP ACTIONS'"
   Set Rst3 = New ADODB.Recordset
   Rst3.Open Rqte, BaseConnect, adOpenStatic, adLockReadOnly

A l'exécution, l'erreur suivante se produit :
   Fonction 'replace' non définit dans l'expression.

C'est très important pour moi, pourriez-vous m'aider svp. Mon problème est l'utilisation de la fonction "replace" en SQL dans du code VB.

Rem : cette requête s'exécute très bien directement dans access.

''***************************************************************************
...à votre service
Thanks & Peace
Tonio

15 réponses

Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
BON !!!!!!!!!!
J'ai trouvé........ alors c'est tout con, il faut mettre VAL, et dans ce cas, plus aucun problème de séparateur "." ou ","...

Je pense que je ne suis pas le seul à avoir rencontré ce problème et que mon post servira à qqun...

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
Pour info, je dois faire une somme du champ [vl], de type texte, avec un "." pour séparer les décimales (pas possible d'avoir un autre format de donnée, obligatoirement du texte). Dans mes paramètres régionaux, si je change le séparateur des décimales par un "." alors la fonction "replace" dans ma requête SQL n'est plus nécessaire et je ne rencontre plus de problème. Mais, au final, je devrais laisser le séparateur des décimales en ",". Ce message est juste pour info. Mon vrai problème est l'utilisation de la fonction "replace" dans une requête SQL exécutée via VB.

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
Plus explicitement :

tblVentes[NumVente;montant;produit] ex : [01;102.60;chocolat][02;56.80;chocolat]
Je désires obtenir la somme des montants.
Pour faire une somme, je doit obligatoire remplacer le "." du champ [montant] par une ",".
   Rqte "select sum(replace(montant, ".", ",") from tblVentes where produit 'chocolat'"
   Set Rst3 = New ADODB.Recordset
   Rst3.Open Rqte, BaseConnect, adOpenStatic, adLockReadOnly
A l'exécution, l'erreur suivante se produit :
   Fonction 'replace' non définit dans l'expression.

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
salut,
et si à la place tu convertissais :Rqte "select sum(CCur(montant) from tblVentes where produit 'chocolat'"
 
CCur==>convertit en Currency (mon"taire)

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
le problème c'est que la convertion est impossible, du fait que le séparateur décimal est un ".". De ce fait, il y a une erreur de type.

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
pardon si j' inciste mais chez moi ça marche !

*Table1
vl type texte)

vl

, ----
27.16

, ----
32,50

, ----
47,75

, ----
125.36

SELECT Sum(CCur([Table1]![vl])) AS Expr1
FROM Table1;

Resultat: 232.77

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
pourquoi  pour faire une somme, tu dois obligatoire remplacer le "." du champ [montant] par une "," ?

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
si j'exécute la requête directement sous Access, aucun problème.
Mais le "truc" c'est que j'exécute cette requête via VB (relis mon 1rst message) et "il" me rend un erreur de "type de donnée incomptible" dû au "." car le séparateur décimal, dans les paramètres régionaux, est la ",". Voilà... en changeant les paramètres régionaux, ça tourne bien et me rend la sum juste en faisant un "sum(val)"... me comprends-tu ? :)

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
je te comprend très bien !
le fait est que Replace est reconnue par VB et reniée par Access.
Si tu pouvais mettre à jour ta table sous VB avec Replace avant d' envoyer la requete...

Bonne continuation...

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Tout faux !
Val(15.72) renvoie 15 si le separateur décimal est la virgule
et inversement
Val(15,72) renvoie 15 si le separateur décimal est le point

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
Bah NON heu d'abord !!!! en mettant val(15.25) ----> retourne 15,25

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
beh expliques moi alors :
Ayant le POINT comme séparateur décimal
dans les paramètres régionnaux


Dans ma table j' ai :
12.15
35,72
123.43
244,22


je passe ma requete :
SELECT Val([Table1]![vl]) AS Expr1
FROM Table1;


le resultat est :
Expr1
12.15
35
123.43
244

Mais tant mieux si ça marche avec la virgule comme séparateur
décimal ..











<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />
Messages postés
222
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
18 février 2011
3
Dans VB6, j'exécute ma requête via ADODB, rst.open requete, base...
Dans ma requête, en mettant "select sum(val(montant)) from..", ça me rend bien un nombre avec "," et décimales.
DONC, pour moi c'est tout bon... merci. PEACE

''***************************************************************************
...à votre service
Thanks & Peace
Tonio
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
PEACE !

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
dernière remarque pour la route :
Refais ton calcul .

Peace pour de bon !

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />