Pliki o dostępie swobodnym
Transkrypt
Pliki o dostępie swobodnym
(C)2005 RoG@j Pliki o dostępie swobodnym Wprowadzenie Definiowanie typu zmiennej Zapisywanie rekordów w pliku Odczytywanie rekordu Definiowanie typu zmiennej ! ! ! VBA pozwala na definiowanie własnych typów zmiennych Potrzeba ta najczęściej pojawia się przy obsłudze baz danych Programy do obsługi baz danych przechowują dane w tabelach. ! ! ! Wiersz nazywany jest rekordem Kolumna to pole Każdy rekord ma taką sama strukturę Instrukcja Type ! ! ! ! VBA18 Początek definicji typu zmiennej – słowo kluczowe Type Koniec definicji – End Type Typ zmiennej definiuje się na poziomie modułu (w sekcji General) – nie można definiować typu zmiennej wewnątrz procedury. Domyślnie zmienne te maja zasięg publiczny 2005-03-22 Wprowadzenie ! ! ! Pliki o dostępie swobodnym są najczęściej wykorzystywane do zapisu informacji podzielonych na wiele bloków o identycznej strukturze. Każdy rekord jest odrębnym obiektem, który można odczytać niezależnie od pozostałych Aby móc to zrealizować trzeba zadeklarować zmienną, która odzwierciedla strukturę rekordów Definiowanie typu zmiennej ! Definiując typ zmiennej odzwierciedlającej strukturę rekordu można: ! ! ! ! Określić liczbę tych elementów Ich długość Typ danych przechowywanych w danym elemencie Nowy typ zmiennej definiuje się za pomocą instrukcji Type Przykład deklaracji typu Type Osoba ID As Integer Imie As String * 20 Nazwisko As String * 20 Wiek As Byte End Type 1 (C)2005 RoG@j Zapisywanie rekordów w pliku O co tu chodzi? Sub ZapiszRekord() Dim NowaOsoba As Osoba Dim NumerRekordu As Byte Open "Osoby.txt" For Random As #1 Len = Len(NowaOsoba) NumerRekordu = 1 NowaOsoba.ID = NumerRekordu NowaOsoba.Imie = "Robert" NowaOsoba.Nazwisko = "Gajewski" NowaOsoba.Wiek = 50 Put #1, NumerRekordu, NowaOsoba Close #1 End Sub ! Wyjaśnień cd. Odczytywanie rekordu ! ! ! ! ! VBA18 2005-03-22 Do zapisywania informacji w pliku o dostępie bezpośrednim służy Put Put #1, NumerRekordu, NowaOsoba Ostatnia operacja jest zamknięcie pliku (jak dla plików o dostępie sekwencyjnym) Zawartość pliku jest podzielona na rekordy o jednakowej długości Rekordy można oczywiście odczytywać… ! ! Deklaracje powołują nowy rekord i licznik rekordów, który może się przydać Open otwiera plik – Random określa plik o dostępie bezpośrednim Argument Len oznacza długość rekordu ! ! ! ! ! Wyznaczamy go funkcją Len() Dostęp do poszczególnych pól rekordów zapewnia . NazwaRekordu.NazwaPola Dowolny rekord zapisany w pliku o dostępie swobodnym można odczytać za pomocą Get Get #NumerPliku, [NumerRekordu], NazwaZmiennej Jeśli pominiemy NumerRekordu to następuje odczytanie następnego rekordu po tym, który został odczytany ostatnio Przykład czytania… (1) Przykład czytania… (2) Sub CzytajRekord() Dim Rekord As Osoba Dim NumerRekordu As Byte Dim Numer As Byte Dim Imie As String Dim Nazwisko As String Dim Wiek As Byte … End Sub Sub CzytajRekord() … Open "Osoby.txt" For Random As #1 Len = Len(Rekord) Get #1, 1, Rekord Numer = Rekord.ID Imie = Rekord.Imie Nazwisko = Rekord.Nazwisko Wiek = Rekord.Wiek MsgBox Imie & " " & Nazwisko & " " & Wiek Close #1 End Sub 2