web-dev-qa-db-fra.com

Accéder à 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: 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

41
Asynchronous

Utiliser la fonction VBA d'Access Replace(text, find, replacement) :

Dim result As String

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
60
Mitch Wheat

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

3
Dave 2.71828

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
2
Matt Donnan

É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
2
BiggerDon