Problème de fonction replace()

Résolu
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014
-
Messages postés
156
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
28 décembre 2010
-
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

Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

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';
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

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?
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Il y en manque un bout :


rs.movenext


loop
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

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*';
Messages postés
109
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
14 février 2014

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
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

'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
Messages postés
156
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
28 décembre 2010

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