DAO RecordCount

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.


kawa dla marzateli

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Zamykanie Recordset DAO

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.


kawa dla marzateli

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Tworzenie zestawu rekordów DAO

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.


kawa dla marzateli

A tu możesz mi postawić kawę: 

 

DAO Recordset

Recordset to właściwość DAO związana z zestawem rekordów.  

kliknij, aby powiększyć

Jest to jedna z najważniejszych obiektów do obsługi bazy danych z poziomu kodu VBA. 

Ma też swoje właściwości i metody:

WŁAŚCIWOŚCI

METODY

    • Close
      zamykanie zestawu rekordów

– sukcesywnie będą się tu pojawiać linki do wpisów poświęconych najczęściej stosowanym


kawa dla marzateli

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

DAO Database

Database to właściwość DAO odwołująca się do bazy danych. 

kliknij, aby powiększyć

Za pomocą ten właściwości można w prosty sposób pobierać/dodawać/edytować zestawy rekordów z dowolnej bazy danych. 
Np.

Public Sub Bazy_Danych()
Dim MojaBaza1 As DAo.Database
Dim MojaBaza2 As DAo.Database
’przypisanie zmiennej do bieżącej bazy danych
Set MojaBaza1 = CurrentDb
’przypisanie zmiennej do innej bazy danych
Set MojaBaza2 = OpenDatabase(„C:\BazaZapas.accdb”)
'(…)
End Sub

CuurentDb to zmienna obiektowa typu Database , która reprezentuje bazę danych aktualnie otwartą w oknie programu Microsoft Access.


kawa dla marzateli

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Obiekt DAO Recordset

Obiekt DAO.Recordset to obiekt VBA bardzo podobny do obiektu ADO Recordset, ale oparty o inną bibliotekę, ma więc nieco inne metody i właściwości. 
Teoretycznie DAO nie jest już wspierany przez Microsoft i można by o nim zapomnieć, ale jest jeden wyjątek. Recordset ADO nie obsługuje pól typu Załącznik – do tego jest niezbędne DAO. 

Do skorzystania z Recorset DAO wymagana jest referencja w edytorze VBA (Tools –> References…): 
Microsoft Office xx.0 Access Database Engine Object Library
Ja korzystam  pakietu Microsoft Office 2019, więc jest to Microsoft Office 16.0 Access Database Engine Object Library:

kliknij, aby powiększyć

W innych wersjach może być to inny numer biblioteki, ale sama referencja jest wymagana. 

kliknij, aby powiększyć

Obiekt DAO  ma swoje właściwości i metody, z czego najczęściej stosowane to: 
WŁAŚCIWOŚCI DAO

METODY DAO

Sukcesywnie będą się tu pojawiać linki do notek im poświęconym. 


kawa dla marzateli

A tu możesz mi postawić kawę: 

buycoffee.to/marzatela