RecordCount to właściwość obiektu DAO.Recordset wyznaczająca liczbę rekordów.
kliknij, aby powiększyć
W przypadku tej właściwości ważny jest jednak parametr Type przy otwieraniu zestawu rekordów. Tylko dla wartości 1 czyli dbOpenTable wystarczy zapis: IleRekordow=RST.RecordCount
W pozostałych przypadkach konieczne jest przejście do ostatniego rekordu i dopiero wówczas odczyt właściwości RecordCount.
Przykładowy kod:
Public Sub IleRekordow() Dim RST As DAO.Recordset Dim IleRek As Long Set RST = CurrentDb.OpenRecordset(„KwerendaSpisKsiazek”) If Not (RST.EOF And RST.BOF) Then
RST.MoveLast
IleRek = RST.RecordCount Else
IleRek = 0 End If '(…)
RST.Close Set RST = Nothing End Sub
Oczywiście, liczbę rekordów z danej tabeli czy kwerendy można też wyznaczyć za pomocą funkcji DCount, ale czasem, szczególnie przy bardzo dużych bazach danych, lepiej zrobić to za pomocą tej właściwości.
Close to metoda DAO Recordset zamykająca zestaw rekordów.
kliknij, aby powiększyć
Po zakończeniu edycji/przeglądania zestawu danych – konieczne jest jego zamknięcie.
Przykładowy kod:
Public Sub Bazy_Danych() Dim RST As DAO.Recordset Dim IleRek As Long Set RST = CurrentDb.OpenRecordset(„KwerendaSpisKsiazek”) '(…) RST.Close Set RST = Nothing End Sub
CuurentDb to zmienna obiektowa typu Database , która reprezentuje bazę danych aktualnie otwartą w oknie programu Microsoft Access.
Do utworzenia zestawu rekordów w DAO służy metoda OpenRecordset obiektu DAO Database
kliknij, aby powiększyć
Parametry wejściowe to:
kliknij, aby powiększyć
Name
argument wymagany typu String. Może być to nazwa kwerendy, tabeli czy zmienna będąca zapisem kwerendy w SQL
Type
argument opcjonalny typu Variant, określa typ zestawu rekordów:
dbOpenDynamic(lub wartość 16)
Najbardziej „żywy” i dynamiczny typ rekordsetu.
– pozwala na odczyt, dodawanie, edycję i usuwanie rekordów,
• wszystkie zmiany wprowadzone przez innych użytkowników są widzoczne w czasie rzeczywistym,
• wprowadzone zmiany są widoczne od razu także dla innych użytkowników,
• najbardziej elastyczny, ale też najcięższy wydajnościowo,
• nie działa z niektórymi źródłami danych (np. niektóre ODBC).
Kiedy używać: gdy potrzebna jest pełna interakcja z danymi i współdzielenia zmian.
dbOpenDynaset (lub wartość 2) Najczęściej używany typ — kompromis między funkcjonalnością a wydajnością.
– można odczytywać, edytować, dodawać i usuwać rekordy (o ile źródło na to pozwala).
• Rekordset widzi niektóre zmiany innych użytkowników, ale nie wszystkie (np. nie widać nowych rekordów, jeśli nie spełniają kryteriów zapytania).
• zmiany w bieżącym rekordzie są widoczne natychmiast.
• bardziej wydajny niż dbOpenDynamic.
Kiedy używać: w 90% przypadków — formularze, edycja danych, zapytania z JOIN.
dbOpenForwarOnly(lub wartość 8) Rekordset tylko do przodu — szybki i lekki,
– można tylko odczytywać dane,
– można przechodzić tylko do przodu (MoveNext),
– brak możliwości edycji, dodawania, usuwania,
– bardzo szybki, idealny do przetwarzania dużych zbiorów danych.
Kiedy używać: gdy chcesz szybko przeiterować dane bez potrzeby modyfikacji.
dbOpenSnapshot(lub wartość 4) Statyczna migawka danych.
– tylko do odczytu,
– dane są „zamrożone” — nie widać zmian innych użytkowników.
– bardzo stabilny i przewidywalny.
– szybszy niż dynaset, wolniejszy niż forward-only.
Kiedy używać: gdy potrzebujesz stabilnego zestawu danych do raportów, eksportów, porównań.
dbOpenTable(lub wartość 1) Bezpośredni dostęp do tabeli (tylko lokalne bazy Access).
– można odczytywać i modyfikować dane,
– działa tylko z tabelami w tej samej bazie (nie działa z zapytaniami, ODBC, linkami),
– umożliwia dostęp do indeksów i szybkie wyszukiwanie (Seek),
– najszybszy sposób pracy z lokalną tabelą.
Kiedy używać: gdy potrzebujesz metody Seek lub maksymalnej wydajności w lokalnej tabeli.
Options argument opcjonalny typu Variant, określający cechy nowego zestawu rekordów
Lockedit argument opcjonalny typu Variant, określający blokadę zestawu rekordów:
dbOptimistic(lub wartość 3)
Najbardziej klasyczny i najczęściej używany tryb.
– rekord nie jest blokowany podczas edycji,
– blokada następuje dopiero w chwili zapisu,
– jeśli w międzyczasie inny użytkownik zmienił ten sam rekord, pojawi się konflikt (błąd 3197 lub 3260).
Zaletą jest tu bardzo dobra wydajność oraz minimalne blokowanie — użytkownicy nie przeszkadzają sobie nawzajem. Możliwe są tu jednak konflikty przy zapisie.
dbOptimisticBatch(lub wartość 5) Odmiana optymistycznego blokowania, ale bardziej „precyzyjna”. DAO blokuje tylko te pola, które faktycznie zostały zmienione. Konflikt wystąpi tylko wtedy, gdy inny użytkownik zmienił dokładnie to samo pole, a nie cały rekord.
dbOptimisticValue (lub wartość 1) Tryb dla aktualizacji wsadowych (batch updates)
– zmiany są buforowane lokalnie, a nie zapisywane od razu,
– można zmodyfikować wiele rekordów i zapisać je „hurtowo”
– w przypadku konfliktów DAO zwraca informacje o błędach dla poszczególnych rekordów.
Bardzo wydajne przy dużych operacjach, choć wymaga bardziej zaawansowanej obsługi błędów.
dbOptimistic (lub wartość 2) blokada natychmiast po rozpoczęciu edycji
– rekord jest blokowany w momencie rozpoczęcia edycji,
-blokada trwa aż do czasu zakończenia edycji,
– w tym czasie żaden inny użytkownik nie może edytować tego rekordu
Bardzo przewidywalny w środowisku wieloużytkownikowym. Może powodować „zatory”, jeśli użytkownik długo trzyma rekord w edycji.