2011-12-18 14 views
34

Sto cercando di creare una parte di codice che sostituisca una parola con un'altra. Esempio: Sostituire Avenue con Ave e North con N. Sto usando MS Access, potrei usare SQL REPLACE Function ma voglio farlo in VBA usando il modulo Access in modo che possa collegare la funzione ad un'altra colonna.Accesso VBA | Come sostituire parti di una stringa con un'altra stringa

Non sono sicuro da dove iniziare, quindi qualsiasi input sarà molto apprezzato.

Guy

+2

Quale codice hai scritto finora? –

+0

Come ho detto, potrei scrivere usando: 'DECLARE @Mymessage varchar (100) SET @Mymessage = 'Non so come farlo in VBA. ' SELECT REPLACE (@Mymessage,' know ',' understand ') ' Ancora una volta, non sono sicuro di come scriverlo in VBA in un modulo. Grazie per il tuo tempo. – Asynchronous

+0

Vedere anche http://stackoverflow.com/questions/8571192/access-vba-to-trim-space-around-a-specific-character-or-wordss-in-a-column/8571442#8571442 – Fionnuala

risposta

54

funzione VBA Usa Accesso Replace(text, find, replacement):

Dim result As String 

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave") 
+0

Dovrei avere spiegato meglio, diciamo che ho un nome di colonna Indirizzo. Sto semplicemente cercando di sostituire Avenue nella colonna degli indirizzi. Sei il più brillante! Grazie per il tuo prezioso contributo. – Asynchronous

+0

In tal caso, fallo in TSQL –

+0

Ecco la mia soluzione! Grazie per avermi aiutato in questo: tutti dobbiamo strisciare prima di poter camminare. Funzione Pubblica TrmChar (ReplaceChar As String) ReplaceChar = Replace (ReplaceChar, "viale", "Ave") TrmChar = ReplaceChar End Function – Asynchronous

1

Si potrebbe utilizzare una funzione simile a questo anche, permetterebbe di aggiungere in diversi casi in cui si desidera modificare i valori:

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 

Allora il vostro SQL avrebbe letto qualcosa di simile:

SELECT strReplace(Address) As Add FROM Tablename 
+0

Per aggiungere a questa risposta. 1. Il caso può accettare più argomenti: ad es. CASE "Avenue", "Ave." 2. Il caso conta. Usa lcase o ucase con i tuoi confronti – ray

1

Poiché la stringa "Nord" potrebbe essere l'inizio di un nome di strada, ad es. "Northern Boulevard", le indicazioni stradali si trovano sempre tra il numero civico e il nome della via e sono separate dal numero civico e dal nome della via.

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

Stavo leggendo questa discussione e vorrei aggiungere informazioni anche se sicuramente non è più opportuno per l'OP.

BiggerDon sopra indica la difficoltà della sostituzione del carattere "Nord" con "N". Esiste un problema simile con "Avenue" a "Ave" (ad esempio "Avenue of the Americas" diventa "Ave of the Americas": ancora comprensibile, ma probabilmente non è quello che vuole l'OP.

La funzione replace() è interamente context-free, ma gli indirizzi no.Una soluzione completa deve avere una logica aggiuntiva per interpretare correttamente il contesto e quindi applicare replace() secondo necessità

I database contengono in genere indirizzi, quindi volevo sottolineare che il La versione generalizzata del problema dell'OP applicato agli indirizzi all'interno degli Stati Uniti è stata affrontata (umorismo!) dal Coding Accuracy Support System (CASS) .CASS è uno strumento database che accetta un indirizzo USA e lo completa o corregge per soddisfare uno standard impostato dal servizio postale degli Stati Uniti. La voce di Wikipedia https://en.wikipedia.org/wiki/Postal_address_verification ha le basi e ulteriori informazioni sono disponibili presso l'ufficio postale: https://ribbs.usps.gov/index.cfm?page=address_info_systems

Problemi correlati