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

38
demandé sur Fionnuala 2011-12-18 10:31:16

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")
59
répondu Mitch Wheat 2011-12-18 06:36:03

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

3
répondu Dave 2.71828 2016-01-14 16:12:43

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
2
répondu Matt Donnan 2011-12-18 12:50:25

É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
2
répondu BiggerDon 2013-08-28 20:37:14