Funkcja Split

Funkcja Split to jedna z funkcji tekstowych VBA. W wyniku jej działania otrzymujemy tablicę wartości będących fragmentami wyrażenia tekstowego, oddzielonych określonym separatorem.
Argumenty funkcji to:

    • Expression– argument obowiązkowy. Ciąg tekstowy do rozdzielenia
    • Delimiter– argument opcjonalny. Znak rozdzielający. Wartość domyślna to spacja (” “).
    • Limit as Long– argument opcjonalny. Wyznacza kolejny numer podciągu tekstowego. Wartość domyślna =-1 – zwraca wszystkie kolejne ciągi.
    • Compare – sposób porównywania tekstów:
      • vbBinaryCompare – binarne wyszukiwanie znaków (czyli wielkość liter ma znaczenie). Opcja domyślna
      • vbDatabaseCompare – wyszukiwanie zgodne z ustawieniami bazy danych/modułu
      • vbTexCompare – tekstowe wyszukiwanie znaków (czyli wielkość liter nie ma znaczenia)

W uproszczeniu działanie funkcji Split polega na rozbiciu łańcucha  tekstowego na mniejsze ciągi znaków.
Np.  wyrażenie tekstowe “abc|123|xyz” za pomocą funkcji Split można wykorzystać do otrzymania ciągów:
abc
123
xyz
Deliminatorem jest w tym przypadku znak “|“.

Przykładowy kod może wyglądać tak:

Public Sub RozdzielTekst()
Dim a
Dim b
Dim c
Dim ROZ As Variant
Dim JTekst As String
JTekst=”abc|123|xyz”
ROZ=SPLIT(JTekst,”|”)
a=ROZ(0)
b=ROZ(1)
c=ROZ(2)
End Sub

Przy stosowaniu funkcji Split w procedurze czy funkcji należy pamiętać o:

    • separatorem powinien być znak rzadko wykorzystywany, żeby nie dochodziło do nieprawidłowego podziału. Najlepiej wykorzystywać tu znak |.
    • zmienna będąca wynikiem działania funkcji (w przykładzie zmienna ROZ) musi być zadeklarowana jako typ Variant
    • poszczególne elementy wyniku działania funkcji są numerowane od zera
    • każdy element wynikowy jest tekstem. Jeżeli jest to liczba zapisana jako tekst – musimy dokonać jej konwersji.
      W przykładzie dla drugiego elementu tablicy konieczne jest więc zastosowanie b=CInt(ROZ(1)) lub CLng(ROZ(1))

Funkcja Split jest często stosowana w praktyce. Ja najczęściej wykorzystuję ją do przekazywania kilku różnych wartości pomiędzy formularzami lub raportami. Zamykając jeden obiekt, tworzę ciąg, który w formie argumentu OpenArgs w docmd trafia do obiektu, w którym za pomocą właśnie Split “odzyskuję” poszczególne wartości.


Kurs Access 2010 esencja

Opcje modułu VBA

Na początku każdego modułu w edytorze VBA zawsze pierwsze linijki kodu  związane są z jego opcjami. Standardowo pierwsza linia to:

    • Option Compare
      opcja porównania ciągów

        • Option Compare Binary
          cyfrowe porównanie znaków tekstowych, gdzie:
          np. “A” < “a” , “12” > “112”
        • Option Compare Text
          tekstowe porównanie znaków tekstowych, gdzie:
          np. “A” = “a”
        • Option Compare Database
          (opcja domyślna)

          porównanie znaków tekstowych uzależnione od strony kodowej i ustawień regionalnych komputera. Najczęściej jest to zgodne z właściwościami Option Compare Text, czyli
          np. “A” = “a”

    • Option Explicit
      opcja wymuszająca deklarację zmiennych w funkcjach i procedurach zapisanych w module czyli każda ze zmiennych musi być zapisana w bloku np.
      Dim Zmienna1 as Integer
      Dim Zmienna2 as Date
      Domyślnie nie jest wpisana do modułu, ale warto dopisać tę linijką. W ten sposób jeżeli gdzieś  w kodzie pojawi się literówka – od razy wyskoczy to przy kompilacji kodu, gdyż niezadeklarowana zmienna nie zostanie zaakceptowana.
      Opcję tę można włączyć na stałe jako domyślne ustawienie modułu, zaznaczając checkbox w edytorze VBA Tool–> Options…
    • Option Private Module
      ukrywanie funkcji i procedur zapisanych w module.
      Po wpisaniu tej linijki na początku modułu zapisane w nim publiczne funkcje/procedury są widziane w innych modułach kodu, ale nie są dostępne w kreatorze wyrażeń Accessa.

 

Kurs Access - programowanie w VBA

 

Funkcja NZ

Funkcja NZ jest moją ulubioną funkcją Accessa, często ją wykorzystuję – zarówno w wyrażeniach jak i w kodzie VBA. Funkcję można opisać jako wartość jeśli null.
Argumenty funkcji to:

    • wartość pola – wartość pobrana z tabeli, kwerendy lub wyrażenia.
      Typ danych – variant.
    • wartość jeśli null – czyli co wstawić, jeżeli wartość pola będzie nullem.
      Typ danych – variant, uzależniony od typu pola.

W praktyce najczęściej stosuje się formuły:

    • =nz(wartosc_pola;O) – dla wartości liczbowych
    • =nz(wartosc_pola;””) – dla wartości tekstowych

Odpowiednikiem funkcji nz w VBA jest funkcja o tej samej nazwie.


 

Kurs Access 2010 esencja

 

Null to nie zero

Projektując bazę danych Access (choć nie tylko, tak jest praktycznie we wszystkich systemach bazodanowych) trzeba pamiętać o tym, że puste pole tabeli ma wartość null czyli brak wartości. Nie jest to odpowiednik pustej komórki w Excelu, gdzie  w zależności od typu danych taka wartość jest uznawana za zero czy pusty ciąg tekstowy i w ten sposób może być argumentem funkcji. W Accessie jeśli w polu jest null, wstawiając pole do formuły trzeba zastosować funkcję IsNull lub nz i w ten sposób zabezpieczyć się przed błędem.
Dotyczy to zarówno wyrażeń jak i kodu VBA.