Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Oorspronkelijke productversie: Microsoft Office Access 2003, Microsoft Office Access 2007, Access 2010
Origineel KB-nummer: 168798
Samenvatting
Dit artikel bevat een procedure voor het parseren van één variabele met informatie over de plaats, de staat en de postcode in drie afzonderlijke variabelen. De routine ondersteunt:
- Een postcode van 5 of 9 cijfers.
- Statusnamen van meerdere woorden (indien voorafgegaan door een komma).
- Een willekeurig aantal tussenliggende spaties.
Voorbeelden van ondersteunde invoer:
New York, New York, 99999
New York, NY, 99999-9999
New York, NY 99999-9999
New York NY 99999
Meer informatie
WAARSCHUWING: HET GEBRUIK DOOR U VAN DE CODE/MACRO IN DIT ARTIKEL IS OP EIGEN RISICO. Microsoft biedt deze code/macro 'as is' zonder enige garantie, expliciet of impliciet, met inbegrip van maar niet beperkt tot de impliciete garanties van verkoopbaarheid en/of geschiktheid voor een bepaald doel.
OPMERKING: In de volgende voorbeeldcode wordt een onderstrepingsteken (_) aan het einde van een regel gebruikt als een regelvolgteken. Voor versies van BASIC die geen ondersteuning bieden voor regelvolgtekens, verwijdert u het onderstrepingsteken van het einde van de regel en voegt u samen met de volgende regel wanneer u deze code opnieuw maakt.
Velden worden geparseerd in de volgende volgorde als er geen komma's worden gevonden in het adres: Postcode, Staat, Plaats Als er ten minste één komma aanwezig is, wordt deze verondersteld tussen Plaats en Staat te staan en worden de velden in een andere volgorde geparseerd: Plaats, Staat, Postcode
Stapsgewijs voorbeeld
Voer de volgende code in:
Function CutLastWord (ByVal S As String, Remainder As String) _ As String ' CutLastWord: returns the last word in S. ' Remainder: returns the rest. ' ' Words are separated by spaces ' Dim I As Integer, P As Integer S = Trim$(S) P = 1 For I = Len(S) To 1 Step -1 If Mid$(S, I, 1) = " " Then P = I + 1 Exit For End If Next I If P = 1 Then CutLastWord = S Remainder = "" Else CutLastWord = Mid$(S, P) Remainder = Trim$(Left$(S, P - 1)) End If End Function Sub ParseCSZ (ByVal S As String, City As String, State As String, _ Zip As String) Dim P As Integer ' ' Check for comma after city name ' P = InStr(S, ",") If P > 0 Then City = Trim$(Left$(S, P - 1)) S = Trim$(Mid$(S, P + ' ' Check for comma after state ' P = InStr(S, ",") If P > 0 Then State = Trim$(Left$(S, P - 1)) Zip = Trim$(Mid$(S, P + 1)) Else ' No comma between state and zip Zip = CutLastWord(S, S) State = S End If Else ' No commas between city, state, or zip Zip = CutLastWord(S, S) State = CutLastWord(S, S) City = S End If ' ' Clean up any dangling commas ' If Right$(State, 1) = "," Then State = RTrim$(Left$(State, Len(State) - 1)) End If If Right$(City, 1) = "," Then City = RTrim$(Left$(City, Len(City) - 1)) End If End Sub
Als u wilt testen, maakt u een formulier met vier tekstvakken (txtAddress, txtCity, txtState, txtZip) en een opdrachtknop. Voeg de volgende code toe:
Sub Command1_Click() Dim City As String, State As String, Zip As String ParseCSZ txtAddress, City, State, Zip txtCity = City txtState = State txtZip = Zip End Sub
Geef het formulier weer, typ een adres in txtAddress en klik op de opdrachtknop. De andere drie velden moeten de geparseerde waarden bevatten.