Access

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

• Metoda CreateQueryDef obiektu DAO.Database (DAO.Connection).

Metoda CreateQueryDef tworzy nowy obiekt QueryDef, w określonym obiekcie Database lub Connection.

Krótki opis obiektu QueryDef

Obiekt QueryDef reprezentuje zapisaną kwerendębazie danych Microsoft Jet. Za pomocą kodu VBA można powiązać zmienną obiektową QueryDef z istniejącą kwerendą, utworzyć nową kwerendę, zmienić instrukcję SQL w kwerendzie, podać wartości parametrów kwerendy, a także wykonać kwerendę.

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

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. Są one 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.

Składnia metody CreateQueryDef

' definicja:
Function CreateQueryDef([Name], [SQLText]) As QueryDef
' wywołanie:
Set QueryDef = Object.CreateQueryDef([Name], [SQLText])

Składnia metody CreateQueryDef zawiera następujące elementy:

  Element  Opis
QueryDef zmienna obiektowa reprezentująca tworzony obiekt QueryDef.
Object zmienna obiektowa reprezentująca otwarty obiekt Database lub Connection, który będzie zawierał utworzony nowy obiekt QueryDef
Name Element nieobowiązkowy typu Variant podtyp String, który nadaje niepowtarzalną nazwę nowemu obiektowi QueryDef. Szczegółowe informacje o prawidłowych nazwach obiektów QueryDef można znaleźć w opisie właściwości Name.
SQLText Element nieobowiązkowy typu Variant podtyp String, który jest instrukcją SQL definiującą obiekt QueryDef. Jeżeli argument ten zostanie pominięty, można zdefiniować obiekt QueryDef, ustawiając jego właściwość SQL przed, lub po dołączeniu tego obiektu do kolekcji.

 

Użycie.
Jeżeli w obszarze roboczym Microsoft Jet przy tworzeniu obiektu QueryDef argument Name nie będzie ciągiem o długości zerowej, to utworzony obiekt QueryDef zostanie automatycznie dołączony do kolekcji QueryDefs. W obszarze roboczym ODBCDirect obiekty QueryDef są zawsze obiektami tymczasowymi.

W obszarze roboczym ODBCDirect argument SQLText może określać instrukcję SQL lub procedurę pamiętaną na serwerze Microsoft SQL wraz z jej parametrami.

Jeżeli obiekt określony przez argument Name znajduje się już w kolekcji, wystąpi błąd wykonania.
Można utworzyć tymczasowy obiekt QueryDef, wywołując metodę CreateQueryDef z argumentem Name w postaci ciągu o długości zerowej. Obiekt tymczasowy można również uzyskać, ustawiając właściwość Name nowo utworzonego obiektu QueryDef na ciąg o długości zerowej (""). Tymczasowe obiekty QueryDef są bardzo użyteczne, gdyż pozwalają wielokrotnie wykonywać dynamiczne instrukcje SQL bez potrzeby tworzenia nowych, trwałych obiektów w kolekcji QueryDefs. Tymczasowego obiektu QueryDef nie można dołączyć do żadnej kolekcji, ponieważ ciąg o długości zerowej nie jest poprawną nazwą dla trwałego obiektu QueryDef. W każdej chwili można ustawić właściwości NameSQL nowo utworzonego obiektu QueryDef i następnie dołączyć go do kolekcji QueryDefs.

Aby wykonać instrukcję SQL w obiekcie QueryDef, należy użyć metody Execute lub OpenRecordset.

Używanie obiektu QueryDef jest preferowanym sposobem realizacji kwerend przekazujących SQL, skierowanych do baz danych ODBC.

Aby usunąć obiekt QueryDef z kolekcji QueryDefsbazie danych Microsoft Jet, należy w stosunku do tej kolekcji użyć metody Delete. Natomiast dla bazy danych ODBCDirect, należy użyć metody Close w stosunku do obiektu QueryDef.

Słownik użytych terminów.


• metoda
Procedura podobna do instrukcji lub funkcji, operująca na konkretnych obiektach. Można na przykład zastosować metodę Print obiektu Debug w celu przeniesienia drukowanych danych wyjściowych do okienka bezpośredniego w „Oknie analizy programu”.
• 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.
• baza danych Microsoft Jet
Baza danych utworzona przez aparat bazy danych Microsoft Jet. Plik bazy danych Microsoft Jet ma rozszerzenie nazwy .mdb lub .accdb.
• 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.
• aparat bazy danych Microsoft Jet
System zarządzania bazą danych pobierający i zapamiętujący 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.
• zmienna obiektowa
Zmienna zawierająca odwołanie do obiektu.
• Variant - typ danych
Specjalny typ danych, mogący zawierać zarówno dane liczbowe, dane znakowe, daty, jak i wartości specjalne EmptyNull. Funkcja VarType określa sposób traktowania danych typu Variant. Wszystkie zmienne są typu Variant, jeżeli nie zostały zadeklarowane jawnie jako zmienne jakiegoś innego typu.
• String - typ danych
Podstawowy typ danych służący do przechowywania informacji znakowych. Zmienna typu String ma stałą lub zmienną długość i zawiera po jednym znaku na bajt. Ciągi znaków o stałej długości mają zadeklarowaną konkretną długość i mogą zawierać od 1 do maksymalnie 65 536 (2^16) znaków. Ciągi o zmiennej długości mogą mieć długość do około 2 miliardów (2^31) znaków (około 65 000 (2^16) znaków.
• 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 technologię ODBCDirect w celu uzyskiwania bezpośredniego dostępu do źródeł danych ODBC, z pominięciem aparatu bazy danych Microsoft Jet.
• 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.
• 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.
• ODBCDirect
Technologia pozwalająca na uzyskiwanie dostępu do źródeł danych ODBC bezpośrednio, z wykorzystaniem własności DAO, które pozwalają ominąć aparat bazy danych Microsoft Jet.