Remplacer une partie de chaine de caractère par une autre dans un champ...

Messages postés
38
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
12 août 2005
- - Dernière réponse : turlututuchapopointu
Messages postés
38
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
12 août 2005
- 5 août 2005 à 11:38
Salut à tous,

J'aimerai savoir comment formuler une requête qui remplacerai une partie de chaine de caractère par une autre dans un champ (en gardant le nom du fichier inchangé)?
ex:C:\...\MaBaseDeDonnées\Illustrations\...+NomDuFichier >> D:\MaBaseDeDonnéesSauvée1\IllustrationsSauvées\...+NomDuFichier

Sélectionner un champ >> je sais faire
Update d'un champ avec une valeur constante >> je sais faire aussi
Updater un champ ou chaque valeur est différente >> ?
Récupérer cette valeur pour n'en remplacer qu'une partie >> ?

Il y a au moins un point positif: l'adresse à remplacer est toujours la même et l'adresse à mettre à la place idem.
J'ai essayé la fonction Replace mais j'ai un message d'erreur comme quoi il attend un "=" alors qu'aucuner mention de ce "=" n'est faite dans l'aide de VB.
Quelqu'un a une idée?
Afficher la suite 

5 réponses

Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
0
Merci
salut,

la fonction replace, comme toute fonction, te renvoi quelque chose, en l'occurence le resultat du remlacement.


il faut doncl'utiliser comme ca :


cheminFinal = replace(cheminInitial, "C:\...\MaBaseDeDonnées\Illustrations\...", "D:\MaBaseDeDonnéesSauvée1\IllustrationsSauvées\...")

comme ca ca devrait marcher !
Messages postés
38
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
Bon, alors voilà. J'ai mis le replace suivant:
cheminFinal = Replace(IllusTruc.Lien, FileIllustrations, "D:\MaBaseDeDonnéesSauvée1\IllustrationsSauvées")
IllusTruc est ma table et Lien est le champ où je veux qu'il y aie des remplacements.
Problème: Erreur d'exécution'424': Objet requis.
Il semblerai que l'appel de mon champ ne lui plaise pas. Comment faire pour qu'il aille chercher une ligne après l'autre?
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
0
Merci
oulala mais attend,

tu veux faire la modif directement dans la base de données ?
ou est-ce que tu veux juste manipuler les variables VB ?

si tu veux le faire directement dans la base, deux solutions :
soit tu recupere dans un premier temps le contenu du champs dans une var VB, tu la modifie puis tu remet dans la base.

mais le mieux c'est encore de faire le tout en une seule requete. du style
UPDATE maTable
SET monChamps = REPLACE(monChamps, ChaineInitiale, ChaineFinale)

mais la la fonction REPLACE va dependre de ton SGBDR (celle que j'ai mise au dessus c'est pour du SQL Server.

enfin je suis pas sur d'avoir tres bien compris ce que tu veux faire ?!?
Messages postés
38
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
Merci pour ces indices.
Mon SGBDR est Access 2003. Ce que je veux faire, c'est préparer les données à la sauvegarde. J'ai une table où des adresses de fichiers sont répertoriées. Jusqu'ici tu me suis.
Pour vider le DD de temps en temps, on va graver ces données sur un CD, non? Pour pouvoir toujours les consulter, il faut donc modifier l'accès à ces données. D'où la modification d'une partie de la chaine de caractères: C:\ ...\Monfichier.jpg >> D:\..(autre adresse)\MonFichier.jpg
Je vais essayer ta requête.
Messages postés
38
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
Aargh man!
Erreur d'exécution '3075': Erreur de syntaxe (opérateur absent) dans l'expression 'Replace(Lien, "c:\...", "d:\...")'.
Bon, on dirai que SQLServer n'a pas le mêmes codes SQL...
strSQL = "UPDATE IllusTruc " & _
"Set Lien = Replace(Lien, ''" & FileIllustrations & "'', ''D:\MaBaseDeDonnéesSauvée1\IllustrationsSauvées'');"
DoCmd.RunSQL strSQL