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

turlututuchapopointu Messages postés 38 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 12 août 2005 - 4 août 2005 à 10:47
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?

5 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
4 août 2005 à 11:03
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 !
0
turlututuchapopointu Messages postés 38 Date d'inscription mardi 21 novembre 2000 Statut Membre Dernière intervention 12 août 2005
4 août 2005 à 12:32
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?
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
5 août 2005 à 10:10
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 ?!?
0
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:22
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.
0

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

Posez votre question
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
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
0
Rejoignez-nous