OVH Cloud OVH Cloud

Remplacer dans une chaine de caractères à partir de la fin

1 réponse
Avatar
daddyel
Bonjour,

Je souhaite dans une requête de mise à jour effectuer un "replace" en
partant de la fin du champ (champ de longueur variable).

Ainsi en remontant en sens inverse le contenu du champ je pourrais grâce à
la syntaxe suivante de replace : Replace(monchamp,Chr(13) & Chr(10)," ",1,1)
transformer :

Exemple1
--------
Texte1
Texte2
Texte3

en

Texte1
Texte 2 Texte3

Exemple2
--------
Texte4
Texte5
Texte6
Texte7

en

Texte4
Texte5
Texte 5 Texte 7


Merci de votre aide

1 réponse

Avatar
3stone
Salut,

"daddyel"
| Je souhaite dans une requête de mise à jour effectuer un "replace" en
| partant de la fin du champ (champ de longueur variable).
|
| Ainsi en remontant en sens inverse le contenu du champ je pourrais grâce à
| la syntaxe suivante de replace : Replace(monchamp,Chr(13) & Chr(10)," ",1,1)
| transformer :
|
| Exemple1
| --------
| Texte1
| Texte2
| Texte3
|
| en
|
| Texte1
| Texte 2 Texte3


Un peu longuet à placer directement dans une requête (sur une ligne...)

NewTexte: Left(str, InStrRev(str, Chr(13) & Chr(10)) - 1) & " " & Mid(str, InStrRev(str, Chr(13) &
Chr(10)) + 2)


Plus facile avec une petite fonction que tu utilisera dans la requête

NewTexte: fReplaceLastCrLf([ton champ])


Function fReplaceLastCrLf(str) As String
If IsNull(str) Then Exit Function
Dim pos As Integer
pos = InStrRev(str, Chr(13) & Chr(10))
fReplaceLastCrLf = Left(str, pos - 1) & " " & Mid(str, pos + 2)
End Function


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/