Access

  MS Access 2010+  |  Instrukcje w VBA  |   VBA 7.0



• Get - instrukcja

Instrukcja VBA Get odczytuje do zmiennej dane z otwartego pliku dyskowego.

• Składnia instrukcji Get

Składnia Instrukcji Get

Get [#]numer_pliku, [numer_rekordu], nazwa_zmiennej

Składnia instrukcji Get zawiera następujące elementy:

  Element   Opis
numer_pliku Element obowiązkowy. Dowolny poprawny numer pliku.
numer_rekordu Element nieobowiązkowy. Wartość typu Variant (Long). Numer rekordu (dla plików otwartych w trybie Random) lub numer bajtu (dla plików otwartych w trybie Binary), od którego rozpoczyna się odczyt.
nazwa_zmiennej Element obowiązkowy. Poprawna nazwa zmiennej, do której odczytywane są dane.

Użycie

Dane odczytane za pomocą instrukcji Get są zwykle zapisywane do pliku za pomocą instrukcji Put. Na pozycji 1 znajduje się pierwszy rekord lub bajt w pliku, na pozycji 2 znajduje się drugi rekord lub bajt, i tak dalej. Jeżeli element numer_rekordu zostanie pominięty, odczytany zostanie rekord wskazywany po ostatniej instrukcji Get lub Put (lub przez ostatnio wykonaną funkcję Seek). W ciągu elementów muszą występować przecinki oddzielające od siebie poszczególne elementy, na przykład:

Get #4,,nazwa_zmiennej

Dla plików otwartych w trybie Random zastosowanie mają następujące reguły:

  • Jeżeli długość odczytywanych danych jest mniejsza niż długość określona klauzulą Len w instrukcji Open, instrukcja Get odczytuje kolejne rekordy, poczynając od granic wyznaczonych długością rekordu. Przestrzeń pomiędzy końcem jednego rekordu a początkiem następnego jest wypełniana bieżącą zawartością bufora pliku. Ponieważ ilość danych wypełniających nie może być ściśle określona, dobrym pomysłem jest dopasowanie długości odczytywanych danych tak, aby odpowiadały długości rekordu.
  • Jeżeli zmienna, do której czytane są dane, jest ciągiem znaków o zmiennej długości, instrukcja Get odczytuje dwubajtowy deskryptor zawierający długość ciągu, po czym odczytuje dane do zmiennej. Dlatego długość rekordu określona w klauzuli Len instrukcji Open musi być większa o co najmniej 2 bajty od faktycznej długości ciągu.
  • Jeżeli zmienna, do której czytane są dane, jest typem numerycznym Variant, instrukcja Get odczytuje 2 bajty określające wartość VarType dla typu Variant, po czym dana zapisywana jest do zmiennej. Na przykład, podczas odczytywania zmiennych Variant typu VarType 3, instrukcja Get odczytuje 6 bajtów: 2 bajty określające zmienną Variant jako typ VarType 3 (Long) i 4 bajty zawierające dane typu Long. Długość rekordu określona klauzulą Len w instrukcji Open musi być o co najmniej 2 bajty większa od faktycznej liczby bajtów niezbędnych do zapisania zmiennej.
    Uwaga
    Instrukcję Get można używać do odczytu z dysku tablicy typu Variant, ale nie można używać instrukcji Get do odczytu wartości skalarnej typu Variant zawierającej tablicę. Instrukcji Get nie można też wykorzystywać do odczytu obiektów z dysku .
  • Jeżeli odczytywana wartość jest zmienną Variant typu VarType 8 (String), instrukcja Get odczytuje 2 bajty określające wartość VarType, 2 bajty określające długość ciągu, po czym odczytuje ciąg. Długość rekordu określona klauzulą Len instrukcji Open musi być o co najmniej 4 bajty większa od faktycznej długości ciągu.
  • Jeżeli odczytywana wartość jest tablicą dynamiczną, instrukcja Get odczytuje deskryptor, którego długość równa jest 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do odczytania danych z tablicy i deskryptora tablicy. Na przykład, do zapisu zadeklarowanej poniżej tablicy potrzeba 118 bajtów.
    Dim MojaTablica(1 To 5,1 To 10) As Integer
    Na liczbę 118 bajtów składa się: 18 bajtów na deskryptor (2 + 8 * 2) i 100 bajtów danych (5 * 10 * 2).
  • Jeżeli odczytywana zmienna jest tablicą o stałym rozmiarze, instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.
  • Jeżeli odczytywana wartość jest zmienną innego typu (nie jest ciągiem znaków o zmiennej długości ani zmienną typu Variant), instrukcja Get odczytuje tylko dane. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa długości odczytywanych danych.
  • Instrukcja Get odczytuje elementy typu zdefiniowanego przez użytkownika tak, jak gdyby każdy z nich był odczytywany indywidualnie, z wyjątkiem tego, że nie ma wypełniania przestrzeni między elementami. Tablica dynamiczna typu zdefiniowanego przez użytkownika zapisana na dysku za pomocą instrukcji Put jest poprzedzona deskryptorem, którego długość jest równa 2 plus 8 razy liczba wymiarów, czyli 2 + 8 * LiczbaWymiarów. Długość rekordu określona klauzulą Len instrukcji Open musi być większa lub równa sumie wszystkich bajtów niezbędnych do odczytu poszczególnych elementów, łącznie z tablicami i ich deskryptorami.

Dla plików otwartych w trybie Binary zastosowanie mają wszystkie zasady jakie obowiązują dla trybu Random, z następującymi wyjątkami:

  • Zastosowanie klauzuli Len w instrukcji Open nie ma znaczenia. Instrukcja Get odczytuje wszystkie zmienne z dysku w sposób ciągły, czyli bez wypełniania przestrzeni między rekordami.
  • W przypadku dowolnej tablicy typu innego niż typ zdefiniowany przez użytkownika instrukcja Get odczytuje tylko dane. Nie jest odczytywany żaden deskryptor.
  • Instrukcja Get odczytuje ciągi znaków zmiennej długości, które nie są elementami typu zdefiniowanego przez użytkownika, nie oczekując 2-bajtowego deskryptora długości. Liczba odczytywanych bajtów równa się liczbie znaków w ciągu. Na przykład, poniższe instrukcje odczytują 10 bajtów z pliku otwartego z numerem 1:

    strMojaZmienna = Space(10)
    Get #1,,strMojaZmienna

Słownik użytych terminów.



• zmienna
Opatrzone nazwą miejsce w pamięci do przechowywania danych, które mogą ulegać modyfikacjom w trakcie wykonywania programu. Każda zmienna zaopatrzona jest w unikatową nazwę, która identyfikuje ją w obrębie danego zakresu. Typ danych może być określony lub nie. Nazwy zmiennych muszą zaczynać się literą, muszą być unikatowe w obrębie swego zakresu, nie mogą być dłuższe niż 255 znaków i nie mogą zawierać kropki ani znaku deklarującego typ.
• numer pliku
Numer używany przez instrukcję Open podczas otwierania pliku. Dla plików niedostępnych z innych aplikacji należy używać numerów z zakresu od 1 do 255 włącznie, natomiast dla plików dostępnych z innych aplikacji — numerów z zakresu od 256 do 511.
• instrukcja
Kompletna składniowo jednostka wyrażająca pojedynczą deklarację, definicję bądź akcję. Na ogół instrukcja zajmuje jeden wiersz, można jednak umieścić w jednym wierszu kilka instrukcji, używając dwukropka (:). Można także użyć znaku kontynuacji wiersza (_), aby wiersz logiczny był kontynuowany w kolejnym wierszu fizycznym.
• typ numeryczny
Dowolny, wewnętrzny typ danych numerycznych (Byte, Boolean, Integer, Long, Currency, Single, Double, Date) lub dowolny podtyp numeryczny typu Variant (Empty, Integer, Long, Single, Double, Currency, Decimal, Date, Error, Boolean, Byte).
• typ danych Long
Typ danych służący do przechowywania liczb całkowitych na 4 bajtach, o zakresie wartości od -2 147 483 648 do 2 147 483 647. W języku Visual Basic znakiem deklaracji typu odpowiadającym typowi Long jest znak ampersand (&).
• typ zdefiniowany przez użytkownika
Dowolny typ danych zdefiniowany za pomocą instrukcji Type. Typy danych zdefiniowane przez użytkownika mogą zawierać jeden lub więcej elementów dowolnego typu. Tablice typów definiowanych przez użytkownika oraz innych typów tworzone są za pomocą instrukcji Dim. Typy zdefiniowane przez użytkownika mogą zawierać tablice dowolnego typu.