Access

  MS Access 2010+  |  DAO. Data Access Objects  |   VBA 7.0

• DAO. Obiekt QueryDef

Obiekt QueryDef jest w bazie danych zachowaną definicją kwerendy Microsoft Jet, a w obszarze roboczym ODBCDirect tymczasową definicją kwerendy.

Zastosowanie obiektu QueryDef

Obiekt QueryDef służy do definiowania kwerendy. Na przykład, można:

Obiekt DAO QueryDef
  • Wykorzystać właściwość SQL do ustawienia lub pobrania definicji kwerendy.
  • Wykorzystać kolekcję Parameters obiektu QueryDef do ustawienia lub pobrania parametrów kwerendy.
  • Wykorzystać właściwość Type do pobrania wartości wskazującej, czy kwerenda wybiera rekordy z istniejącej tabeli, tworzy nową tabelę, wstawia rekordy jednej tabeli do innej tabeli, usuwa rekordy czy aktualizuje rekordy.
  • Wykorzystać właściwość MaxRecords do ograniczenia liczby rekordów zwracanych przez kwerendę.
  • Wykorzystać właściwość ODBCTimeout do określenia czasu oczekiwania na rekordy zwracane przez kwerendę. Właściwość ODBCTimeout dotyczy każdej kwerendy realizującej dostęp do danych ze źródła ODBC.

W przypadku obszaru roboczego Microsoft Jet można także:

  • Wykorzystać właściwość ReturnsRecords do wskazania, że kwerenda zwraca rekordy. Właściwość ReturnsRecords jest dopuszczalna jedynie dla kwerend przekazujących SQL.
  • Wykorzystać właściwość Connect do wykonania kwerendy przekazującej SQL w stosunku do bazy danych ODBC.

W przypadku obszaru roboczego ODBCDirect można także:

  • Wykorzystać właściwość Prepare do określenia, czy dla wykonywanej kwerendy należy wywoływać funkcję SQLPrepare API ODBC
  • Wykorzystać właściwość CacheSize do buforowania rekordów zwracanych przez kwerendę.

Dodatkowe uwagi

Możliwe jest tworzenie tymczasowych obiektów QueryDef. W odróżnieniu od trwałych obiektów QueryDef, tymczasowe obiekty QueryDef nie są zapisywane na dysk, ani nie są dołączane do kolekcji QueryDefs. Tymczasowe obiekty QueryDef są przydatne w przypadku kwerend, które muszą być uruchamiane wielokrotnie podczas wykonywania programu, lecz nie muszą być zapisywane na dysk, a w szczególności wtedy, gdy odpowiadające im instrukcje SQL są tworzone podczas wykonywania programu.

Trwały obiekt QueryDef w obszarach roboczych Microsoft Jet można traktować jako skompilowaną instrukcję SQL. Kwerenda wykonywana na podstawie trwałego obiektu QueryDef działa szybciej niż równoważna jej instrukcja SQL wykonana za pomocą metody OpenRecordset. Wynika to z tego, że aparat bazy danych Microsoft Jet nie kompiluje kwerendy przed jej wykonaniem.

Zalecanym sposobem korzystania z dialektu SQL specyficznego dla aparatu zewnętrznej bazy danych, do którego dostęp jest realizowany za pośrednictwem aparatu bazy danych Microsoft Jet, jest zastosowanie obiektów QueryDef. Na przykład, można utworzyć kwerendę dla aparatu Microsoft SQL Server i zachować ją w obiekcie QueryDef. Jeśli konieczne jest użycie kwerendy SQL odnoszącej się do aparatu bazy danych innego niż Microsoft Jet, należy do właściwości Connect przypisać ciąg znaków wskazujący zewnętrzne źródło danych. Kwerendy o prawidłowych właściwościach Connect omijają aparat bazy danych Microsoft Jet i są przekazywane w celu realizacji bezpośrednio do serwera zewnętrznej bazy danych.

Aby utworzyć nowy obiekt QueryDef, należy zastosować metodę CreateQueryDef. W przypadku obszaru roboczego Microsoft Jet, jeśli argumentowi Name zostanie przypisany ciąg znaków lub jeśli właściwość Name nowego obiektu QueryDef zostanie ustawiona na ciąg inny niż ciąg o długości zerowej, powoduje to utworzenie trwałego obiektu QueryDef, który jest automatycznie dołączany do kolekcji QueryDefs i zapisywany na dysku. Przypisanie argumentowi Name ciągu znaków o długości zerowej lub ustawienie właściwości Name na ciąg znaków o długości zerowej powoduje utworzenie tymczasowego obiektu QueryDef.

W przypadku obszaru roboczego ODBCDirect, obiekt QueryDef jest zawsze tymczasowy. Kolekcja QueryDefs zawiera wszystkie otwarte obiekty QueryDef. Zamknięcie obiektu QueryDef powoduje automatyczne usunięcie go z kolekcji QueryDefs.

Aby odwołać się do obiektu typu QueryDef znajdującego się w kolekcji poprzez jego numer porządkowy lub poprzez jego właściwość Name, należy użyć jednej z poniższych form składniowych:

QueryDefs(0)
QueryDefs("Name")
QueryDefs![Name]

Do tymczasowych obiektów typu QueryDef można odwoływać się tylko przez przypisane ich do zmiennej obiektowej.

Słownik użytych terminów.


• baza danych Microsoft Jet
Baza danych utworzona przez aparat bazy danych Microsoft Jet. Plik bazy danych Microsoft Jet ma rozszerzenie nazwy .mdb lub .accdb.
• kwerenda
Sformalizowana instrukcja skierowana do bazy danych mająca zwrócić zestaw rekordów lub wykonać określoną operację na zestawie rekordów. Na przykład, następująca instrukcja kwerendy SQL zwraca rekordy:  SELECT NazwaFirmy FROM Wydawcy WHERE Region = 'PL' 
Tworzone i uruchamiane mogą być kwerendy wybierające, funkcjonalne, krzyżowe, parametryczne i specyficzne dla języka SQL.
• ODBC (Open Database Connectivity)
Standardowy protokół pozwalający na łączenie się aplikacji z różnymi zewnętrznymi serwerami baz danych lub z plikami. Sterowniki ODBC wykorzystywane przez aparat bazy danych Microsoft Jet umożliwiają dostęp do serwera Microsoft SQL Server i kilku innych zewnętrznych baz danych. Za pomocą interfejsu programowania aplikacji (application programming interface, API) ODBC można także uzyskać dostęp do sterowników ODBC i baz danych, z którymi mogą się one łączyć, bez używania aparatu bazy danych Microsoft Jet.
• obszar roboczy Microsoft Jet
Obszar roboczy wykorzystujący aparat bazy danych Microsoft Jet w celu uzyskiwania dostępu do źródła danych. Źródłem danych może być plik bazy danych Microsoft Jet (.mdb), baza danych ODBC, jak np. baza danych Paradox, lub baza danych ISAM.
• obszar roboczy ODBCDirect
Obszar roboczy wykorzystujący aparat bazy danych Microsoft Jet w celu uzyskiwania dostępu do źródła danych. Źródłem danych może być plik bazy danych Microsoft Jet (.mdb), baza danych ODBC, jak np. baza danych Paradox, lub baza danych ISAM.
• instrukcja/ciąg SQL
Wyrażenie definiujące polecenie języka SQL (Structured Query Language), jak na przykład SELECT, UPDATE lub DELETE, mogące zawierać klauzule, jak np. WHERE i ORDER BY. Ciągi i instrukcje SQL są zwykle wykorzystywane w kwerendach, obiektach typu Recordset i funkcjach agregacji, ale mogą być także używane do tworzenia lub modyfikowania struktury bazy danych.
• ciąg o długości zerowej
Ciąg nie zawierający żadnych znaków (""). Funkcja Len wywołana dla takiego ciągu zwraca wartość 0.
• zmienna obiektowa
Zmienna zawierająca odwołanie do obiektu.
• aparat bazy danych Microsoft Jet
System zarządzania bazą danych pobierający i zapamiętujązy dane w bazach danych systemowych i użytkownika. Aparat bazy danych Microsoft Jet może być traktowany jako składnik zarządzający danymi wbudowany w inne systemy dostępu do danych, takie jak Microsoft Access i Visual Basic.
• obiekt
Podstawowy typ danych reprezentujący każdy obiekt, który może być rozpoznany przez program Visual Basic. Typ danych Object jest ogólny: każdą zmienną obiektową można zadeklarować jako zmienną typu Object. Poprawniejsze jest deklarowanie zmiennych obiektowych zgodnie z odpowiadającym im typem danych. Na przykład, do reprezentowania formularza lepiej jest użyć zmiennej typu Form niż zmiennej typu Object. Istnieją dwie kategorie typu danych Object: typ obiektowy aplikacji Microsoft Access oraz typ obiektowy DAO.
• obiekty dostępu do danych (DAO)
Obiekty reprezentujące strukturę bazy danych i zawarte w niej dane. Obiektów DAO można używać w języku Visual Basic do tworzenia i dokonywania zmian w tabelach i kwerendach, zabezpieczania bazy danych lub w celu uzyskania dostępu do zewnętrznych źródeł danych. Można również użyć obiektów DAO do manipulowania danymi przechowywanymi w bazie danych z kodu.