Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oryginalna wersja produktu: Microsoft Office Access 2003, Microsoft Office Access 2007, Access 2010
Oryginalny numer KB: 168798
Podsumowanie
Ten artykuł zawiera procedurę analizowania pojedynczej zmiennej zawierającej informacje o mieście USA, stanie i kodzie pocztowym na trzy oddzielne zmienne. Procedura obsługuje:
- 5- lub 9-cyfrowy kod pocztowy.
- Nazwy stanów wielosłownych (jeśli są poprzedzone przecinkiem).
- Dowolna liczba spacji pośrednich.
Przykłady obsługiwanych danych wejściowych:
Nowy Jork, Nowy Jork, 99999
Nowy Jork, NY, 99999-9999
Nowy Jork, NY 99999-9999
Nowy Jork NY 99999
Więcej informacji
OSTRZEŻENIE: KAŻDE UŻYCIE KODU/MAKRA PODANEGO W TYM ARTYKULE JEST NA WŁASNE RYZYKO. Firma Microsoft udostępnia ten kod/makro "w takim stanie, w jakim jest" bez jakiejkolwiek gwarancji, wyraźnej lub dorozumianej, w tym między innymi do domniemanych gwarancji przydatności handlowej i/lub przydatności do określonego celu.
UWAGA: W poniższym przykładowym kodzie podkreślenie (_) na końcu wiersza jest używane jako znak kontynuacji wiersza. W przypadku wersji PODSTAWOWA, które nie obsługują znaków kontynuacji wiersza, usuń podkreślenie z końca wiersza i scal z następującym wierszem podczas ponownego tworzenia tego kodu.
Pola są analizowane w następującej kolejności, jeśli w adresie nie znaleziono przecinków: Kod pocztowy, Stan, Miasto Jeśli istnieje co najmniej jeden przecinek, przypuszcza się, że znajduje się on między miastem a stanem, a pola są analizowane w innej kolejności: Miasto, Stan, Kod pocztowy
Przykład krok po kroku
Wprowadź następujący kod:
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
Aby przetestować, utwórz formularz z czterema polami tekstowymi (txtAddress, txtCity, txtState, txtZip) i przyciskiem polecenia. Dodaj następujący kod:
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
Wyświetl formularz, wpisz adres w pliku txtAddress i kliknij przycisk polecenia. Pozostałe trzy pola powinny zawierać przeanalizowane wartości.