Access VBA / comment remplacer des parties d'une chaîne par une autre chaîne
J'essaie de créer un morceau de code qui remplace un mot par un autre. Exemple: remplacer Avenue par Ave et Nord Par N. J'utilise MS Access, je pourrais utiliser la fonction SQL REPLACE mais je veux le faire dans VBA en utilisant le module Access afin que je puisse attacher la fonction à une autre colonne.
Je ne sais pas par où commencer, donc toute entrée sera grandement appréciée.
Guy
4 réponses
Utilisation de la fonction VBA Replace(text, find, replacement)
:
Dim result As String
result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
Je lisais ce fil et je voudrais ajouter des informations même si ce n'est sûrement plus opportun pour L'OP.
BiggerDon ci-dessus souligne la difficulté de remplacer par cœur "Nord" par "N". Un problème similaire existe avec "Avenue" à " Ave "(par exemple, "Avenue Of The Americas "devient" Ave of the Americas": toujours compréhensible, mais probablement pas ce que le PO veut.
La fonction replace() est entièrement sans contexte, mais pas les adresses. Une solution complète doit avoir logique supplémentaire pour interpréter correctement le contexte, puis appliquer replace () au besoin.
Les bases de données contiennent généralement des adresses, et je voulais donc souligner que la version généralisée du problème du PO tel qu'appliqué aux adresses aux États-Unis a été abordée (humour!) par le Coding Accuracy Support System (CASS). CASS est un outil de base de données qui accepte une adresse américaine et la complète ou la corrige pour répondre à une norme établie par le service Postal américain. L'entrée de Wikipedia https://en.wikipedia.org/wiki/Postal_address_verification a les bases, et plus d'informations sont disponibles au bureau de poste: https://ribbs.usps.gov/index.cfm?page=address_info_systems
Vous pouvez utiliser une fonction similaire pour cela, il vous permettra d'ajouter dans les différents cas où vous souhaitez modifier les valeurs:
Public Function strReplace(varValue As Variant) as Variant
Select Case varValue
Case "Avenue"
strReplace = "Ave"
Case "North"
strReplace = "N"
Case Else
strReplace = varValue
End Select
End Function
Alors votre SQL lirait quelque chose comme:
SELECT strReplace(Address) As Add FROM Tablename
Étant donné que la chaîne "Nord" peut être le début d'un nom de rue, par exemple "Boulevard Nord", les directions de rue sont toujours entre le numéro de rue et le nom de rue, et séparées du numéro de rue et du nom de rue.
Public Function strReplace(varValue As Variant) as Variant
Select Case varValue
Case "Avenue"
strReplace = "Ave"
Case " North "
strReplace = " N "
Case Else
strReplace = varValue
End Select
End Function