Problème de fonction replace()

Résolu
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014 - 8 sept. 2006 à 14:45
PROTEUS91 Messages postés 156 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 28 décembre 2010 - 8 oct. 2008 à 11:32
Hello,
Petit soucis avec une requête que je lance depuis VB6 avec ADODB vers une BD de type SQL Access voici la requête :


UPDATE CONFIG
SET designation = replace(designation,'DocuDoc','DocuDoc3')
WHERE designation LIKE '*DocuDoc*';
ADODB me dit :
Fonction 'replace' non définie dans l'expression.


Quelqu'un aurait-il une idée sur où se situe le problème?

9 réponses

cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
11 sept. 2006 à 08:41
C'est tout bon j'ai réussi à le faire dans la requête SQL directement.
Pour info ADODB ne supporte pas la fonction replace() - ce qui est bien dommage - voici donc la requete qui m'a permis de faire ce que je voulais:

UPDATE config SET designation = 'c:\progra~1\docudoc3' + mid(designation,20,len(designation))
WHERE mid(designation,1,19) = 'C:\progra~1\docudoc';
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 sept. 2006 à 15:00
salut,
d'après ce que tu écris (du moins ce que j'en comprends), designation est un objet (SET). il ne peut donc pas recevoir une chaîne...

si je fais fausse route, c'est peut-être la fonction replace qui n'est plus reconnue. vois dans ce cas du côté de tes références, ou tape plus haut (strings.)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
8 sept. 2006 à 15:07
En fait designation est le champ de ma table qui contient l'enregistrement sur lequel je veux effectuer ma modification.
tu penses à une référence en particulier?
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
8 sept. 2006 à 15:09
Salut,


A ma connaissance, replace est une fonction VB qui n'est pas comprise par SQL. Je ne vois qu'une façon de faire ce que tu souhaites :


.créer un recordset et, en vb, le parcourir

do while not rs.eof
rs!designation = replace(rs!designation,"'DocuDoc"',"'DocuDoc3")
rs.update
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
8 sept. 2006 à 15:11
Il y en manque un bout :


rs.movenext


loop
0
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
8 sept. 2006 à 15:21
En fait c'est un programme qui lance un fichier SQL donc il faudrait que le travail soit fait dans la requête SQL elle-même pas dans le programme.



Et j'ai oublié de dire que la requête suivante fonctionne bien dans Access directement :
UPDATE CONFIG
SET designation = replace(designation,'DocuDoc','DocuDoc3')
WHERE designation LIKE '*DocuDoc*';
0
cs_akaii Messages postés 109 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 14 février 2014
8 sept. 2006 à 15:24
Erf ok je viens de trouver ça:
http://www.dbforums.com/archive/index.php/t-1059565.html
Du coup je sais pas comment faire je suis assez peu expérimenté en SQL
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
8 sept. 2006 à 15:41
'création du recordset
rs.open "select designation WHERE designation LIKE '*DocuDoc*'", TaConnexion, adOpenKeyset, adLockPessimistic
'replace
do while not rs.eof
   rs!designation = replace(rs!designation,"'DocuDoc"',"'DocuDoc3") 
   rs.update
   rs.movenext
loop
0
PROTEUS91 Messages postés 156 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 28 décembre 2010
8 oct. 2008 à 11:32
Oui mais bon la c'est pas une solution c'est une bifurcation d'autoroute. Cet enchainement ne marchera que si tu connais a l'avance la position du caractere recherché.

Et pour simplifier la chose la fonction InStrRev ne marche pas non plus sous ADODB

Qu'est ce que ca peut etre relou

PROTEUS
0
Rejoignez-nous