J'essaie de créer un morceau de code qui remplace un mot par un autre. Exemple: remplacez Avenue par Ave et North par N. J'utilise MS Access. Je pourrais utiliser la fonction SQL REPLACE, mais je souhaite le faire dans VBA à l'aide du module Access afin de pouvoir associer la fonction à une autre colonne.
Je ne sais pas par où commencer, alors toute contribution sera grandement appréciée.
Gars
Utiliser la fonction VBA d'Access Replace(text, find, replacement)
:
Dim result As String
result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
Je lisais ce fil de discussion et je voudrais ajouter des informations même si ce n’est sûrement plus le moment opportun pour le PO.
BiggerDon ci-dessus souligne la difficulté de remplacer "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 veut le PO.
La fonction replace () est entièrement dépourvue de contexte, mais les adresses ne le sont pas. Une solution complète nécessite une logique supplémentaire pour interpréter correctement le contexte, puis applique replace () au besoin.
Les bases de données contiennent généralement des adresses. Je tenais donc à souligner que la version généralisée du problème du PO appliqué aux adresses situées aux États-Unis a été traitée (humour!) Par le système de prise en charge de la précision de codage (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 définie par le service postal américain. L'entrée Wikipedia https://en.wikipedia.org/wiki/Postal_address_verification contient les bases et de plus amples informations sont disponibles au bureau de poste: https://ribbs.usps.gov /index.cfm?page=address_info_systems
Vous pouvez utiliser une fonction similaire à celle-ci également, cela vous permettrait d’ajouter dans différents cas où vous voudriez changer des 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
Ensuite, votre code SQL se lirait comme suit:
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. "Northern Boulevard", les indications de rue se situent toujours entre le numéro et le nom de la rue et sont séparées du numéro et du nom de la 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