CDaoQueryDef-Klasse
Stellt eine Abfragedefinition ("Querydef") dar, die in einer Datenbank gespeichert ist.
Syntax
class CDaoQueryDef : public CObject
Member
Öffentliche Konstruktoren
name | BESCHREIBUNG |
---|---|
CDaoQueryDef::CDaoQueryDef | Erstellt ein CDaoQueryDef -Objekt. Nächster Anruf Open oder Create , je nach Ihren Anforderungen. |
Öffentliche Methoden
name | BESCHREIBUNG |
---|---|
CDaoQueryDef::Append | Fügt die Abfragedef als gespeicherte Abfrage an die QueryDefs-Auflistung der Datenbank an. |
CDaoQueryDef::CanUpdate | Gibt nonzero zurück, wenn die Abfrage die Datenbank aktualisieren kann. |
CDaoQueryDef::Close | Schließt das querydef-Objekt. Zerstören Sie das C++-Objekt, wenn Sie damit fertig sind. |
CDaoQueryDef::Create | Erstellt das zugrunde liegende DAO querydef-Objekt. Verwenden Sie die Abfragedef als temporäre Abfrage, oder rufen Sie sie auf Append , um sie in der Datenbank zu speichern. |
CDaoQueryDef::Execute | Führt die abfrage aus, die vom Querydef-Objekt definiert ist. |
CDaoQueryDef::GetConnect | Gibt die Verbindungszeichenfolge zurück, die der Abfragedef zugeordnet ist. Die Verbindungszeichenfolge identifiziert die Datenquelle. (Nur für SQL Pass-Through-Abfragen; andernfalls eine leere Zeichenfolge.) |
CDaoQueryDef::GetDateCreated | Gibt das Datum zurück, an dem die gespeicherte Abfrage erstellt wurde. |
CDaoQueryDef::GetDateLastUpdated | Gibt das Datum zurück, an dem die gespeicherte Abfrage zuletzt aktualisiert wurde. |
CDaoQueryDef::GetFieldCount | Gibt die Anzahl der felder zurück, die von der Abfragedef definiert sind. |
CDaoQueryDef::GetFieldInfo | Gibt Informationen zu einem angegebenen Feld zurück, das in der Abfrage definiert ist. |
CDaoQueryDef::GetName | Gibt den Namen der Abfragedef zurück. |
CDaoQueryDef::GetODBCTimeout | Gibt den Timeoutwert zurück, der von ODBC (für eine ODBC-Abfrage) verwendet wird, wenn die Abfragedef ausgeführt wird. Dadurch wird bestimmt, wie lange die Aktion der Abfrage abgeschlossen werden kann. |
CDaoQueryDef::GetParameterCount | Gibt die Anzahl der für die Abfrage definierten Parameter zurück. |
CDaoQueryDef::GetParameterInfo | Gibt Informationen zu einem angegebenen Parameter an die Abfrage zurück. |
CDaoQueryDef::GetParamValue | Gibt den Wert eines angegebenen Parameters an die Abfrage zurück. |
CDaoQueryDef::GetRecordsAffected | Gibt die Anzahl der Datensätze zurück, die von einer Aktionsabfrage betroffen sind. |
CDaoQueryDef::GetReturnsRecords | Gibt nonzero zurück, wenn die durch die Abfrage definierte Abfrage Datensätze zurückgibt. |
CDaoQueryDef::GetSQL | Gibt die SQL Zeichenfolge zurück, die die durch die Abfrage definierte Abfrage angibt. |
CDaoQueryDef::GetType | Gibt den Abfragetyp zurück: löschen, aktualisieren, anfügen, tabelle usw. |
CDaoQueryDef::IsOpen | Gibt nonzero zurück, wenn die Abfragedef geöffnet ist und ausgeführt werden kann. |
CDaoQueryDef::Open | Öffnet eine vorhandene Abfragedef, die in der QueryDefs-Auflistung der Datenbank gespeichert ist. |
CDaoQueryDef::SetConnect | Legt die Verbindungszeichenfolge für eine SQL Pass-Through-Abfrage für eine ODBC-Datenquelle fest. |
CDaoQueryDef::SetName | Legt den Namen der gespeicherten Abfrage fest, indem der Name ersetzt wird, der verwendet wird, wenn die Abfragedef erstellt wurde. |
CDaoQueryDef::SetODBCTimeout | Legt den Timeoutwert fest, der von ODBC (für eine ODBC-Abfrage) verwendet wird, wenn die Abfragedef ausgeführt wird. |
CDaoQueryDef::SetParamValue | Legt den Wert eines angegebenen Parameters auf die Abfrage fest. |
CDaoQueryDef::SetReturnsRecords | Gibt an, ob die Abfragedef Datensätze zurückgibt. Das Festlegen dieses Attributs auf TRUE ist nur für SQL Pass-Through-Abfragen gültig. |
CDaoQueryDef::SetSQL | Legt die SQL Zeichenfolge fest, die die durch die Abfragedef definierte Abfrage angibt. |
Öffentliche Datenmember
Name | BESCHREIBUNG |
---|---|
CDaoQueryDef::m_pDAOQueryDef | Ein Zeiger auf die OLE-Schnittstelle für das zugrunde liegende DAO-Querydef-Objekt. |
CDaoQueryDef::m_pDatabase | Ein Zeiger auf das CDaoDatabase Objekt, dem die Abfragedef zugeordnet ist. Die Abfragedef wird möglicherweise in der Datenbank gespeichert oder nicht. |
Bemerkungen
Eine Abfragedef ist ein Datenzugriffsobjekt, das die SQL-Anweisung enthält, die eine Abfrage beschreibt, und seine Eigenschaften, z. B. "Datum erstellt" und "ODBC-Timeout". Sie können auch temporäre Abfragedef-Objekte erstellen, ohne sie zu speichern, aber es ist praktisch – und viel effizienter – zu speichern, um häufig wiederverwendete Abfragen in einer Datenbank zu speichern. Ein CDaoDatabase-Objekt verwaltet eine Auflistung, die als QueryDefs-Auflistung bezeichnet wird, die ihre gespeicherten Abfragedefs enthält.
Hinweis
Die DAO-Datenbankklassen unterscheiden sich von den MFC-Datenbankklassen basierend auf Open Database Connectivity (ODBC). Alle DAO-Datenbankklassennamen weisen das Präfix "CDao" auf. Sie können weiterhin auf ODBC-Datenquellen mit den DAO-Klassen zugreifen. Im Allgemeinen sind die MFC-Klassen basierend auf DAO mehr fähig als die MFC-Klassen basierend auf ODBC; Die DAO-basierten Klassen können über ODBC-Treiber über ihr eigenes Datenbankmodul auf Daten zugreifen. Die DAO-basierten Klassen unterstützen auch DDL-Vorgänge (Data Definition Language), z. B. das Hinzufügen von Tabellen über die Klassen, ohne DAO direkt aufrufen zu müssen.
Verwendung
Verwenden Sie abfragedef-Objekte, um entweder mit einer vorhandenen gespeicherten Abfrage zu arbeiten oder eine neue gespeicherte Abfrage oder temporäre Abfrage zu erstellen:
In allen Fällen erstellen Sie zunächst ein
CDaoQueryDef
Objekt, indem Sie einen Zeiger auf das CDaoDatabase-Objekt bereitstellen, zu dem die Abfrage gehört.Gehen Sie dann wie folgt vor, je nachdem, was Sie möchten:
Um eine vorhandene gespeicherte Abfrage zu verwenden, rufen Sie die Open-Member-Funktion des Querydef-Objekts auf, und geben Sie den Namen der gespeicherten Abfrage an.
Rufen Sie zum Erstellen einer neuen gespeicherten Abfrage die Elementfunktion "Create" des Querydef-Objekts auf, und geben Sie den Namen der Abfrage an. Rufen Sie dann "Append " auf, um die Abfrage zu speichern, indem Sie sie an die QueryDefs-Auflistung der Datenbank anfügen.
Create
fügt die Abfragedef in einen geöffneten Zustand ein, sodass Sie nach dem AufrufenCreate
nicht aufrufenOpen
.Rufen Sie auf
Create
, um eine temporäre Abfragedef zu erstellen. Übergeben Sie eine leere Zeichenfolge für den Abfragenamen. Rufen SieAppend
nicht auf.
Wenn Sie mit der Verwendung eines Querydef-Objekts fertig sind, rufen Sie die Funktion "Schließen "-Member auf; zerstören Sie dann das querydef-Objekt.
Tipp
Die einfachste Möglichkeit zum Erstellen gespeicherter Abfragen besteht darin, sie zu erstellen und mithilfe von Microsoft Access in Ihrer Datenbank zu speichern. Anschließend können Sie sie in Ihrem MFC-Code öffnen und verwenden.
Zwecke
Sie können ein querydef-Objekt für eine der folgenden Zwecke verwenden:
So erstellen Sie ein
CDaoRecordset
ObjektSo rufen Sie die Memberfunktion des
Execute
Objekts auf, um eine Aktionsabfrage oder eine SQL Pass-Through-Abfrage direkt auszuführen.
Sie können ein querydef-Objekt für jeden Abfragetyp verwenden, einschließlich Auswahl, Aktion, Kreuztabelle, Löschen, Aktualisieren, Anfüge, Make-Table, Datendefinition, SQL Pass-Through-, Union- und Massenabfragen. Der Abfragetyp wird durch den Inhalt der von Ihnen bereitgestellten SQL Anweisung bestimmt. Informationen zu Abfragetypen finden Sie in den Execute
Und GetType-Memberfunktionen . Recordsets werden häufig für Zeilenrückgabeabfragen verwendet, in der Regel diejenigen, die select ... FROM-Schlüsselwörter . Execute
wird am häufigsten für Massenvorgänge verwendet. Weitere Informationen finden Sie unter Execute and CDaoRecordset.
Querydefs und Recordsets
Um ein Querydef-Objekt zum Erstellen eines CDaoRecordset
Objekts zu verwenden, erstellen oder öffnen Sie normalerweise eine Abfragedef wie oben beschrieben. Erstellen Sie dann ein Recordset-Objekt, indem Sie einen Zeiger an Ihr querydef-Objekt übergeben, wenn Sie CDaoRecordset::Open aufrufen. Die abfragedef, die Sie übergeben, muss sich in einem geöffneten Zustand befinden. Weitere Informationen finden Sie unter " CDaoRecordset".
Sie können keine Abfragedef verwenden, um ein Recordset (die am häufigsten verwendete Verwendung für eine Abfrage) zu erstellen, es sei denn, es befindet sich in einem geöffneten Zustand. Setzen Sie die Abfragedef in einen geöffneten Zustand, indem Sie entweder Open
oder Create
.
Externe Datenbanken
Querydef-Objekte sind die bevorzugte Möglichkeit, den nativen SQL Dialekt eines externen Datenbankmoduls zu verwenden. Sie können z. B. eine Transact-SQL-Abfrage (wie in Microsoft SQL Server verwendet) erstellen und in einem Querydef-Objekt speichern. Wenn Sie eine SQL Abfrage verwenden müssen, die nicht auf dem Microsoft Jet-Datenbankmodul basiert, müssen Sie eine Verbindungszeichenfolge bereitstellen, die auf die externe Datenquelle verweist. Abfragen mit gültigen Verbindungszeichenfolgen umgehen das Datenbankmodul und übergeben die Abfrage direkt an den externen Datenbankserver zur Verarbeitung.
Tipp
Die bevorzugte Möglichkeit, mit ODBC-Tabellen zu arbeiten, besteht darin, sie an einen Microsoft Jet anzufügen (. MDB)-Datenbank.
Verwandte Informationen finden Sie in den Themen "QueryDef-Objekt", "QueryDefs-Auflistung" und "CdbDatabase-Objekt" im DAO SDK.
Vererbungshierarchie
CDaoQueryDef
Anforderungen
Header: afxdao.h
CDaoQueryDef::Append
Rufen Sie diese Memberfunktion auf, nachdem Sie Create aufgerufen haben, um ein neues querydef-Objekt zu erstellen.
virtual void Append();
Bemerkungen
Append
speichert die Abfragedef in der Datenbank, indem sie das Objekt an die QueryDefs-Auflistung der Datenbank anfügen. Sie können die Abfragedef als temporäres Objekt verwenden, ohne es anzufügen, aber wenn sie beibehalten werden soll, müssen Sie aufrufen Append
.
Wenn Sie versuchen, ein temporäres Querydef-Objekt anzufügen, löst MFC eine Ausnahme vom Typ CDaoException aus.
CDaoQueryDef::CanUpdate
Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob Sie die Abfragedef ändern können – z. B. ändern sie den Namen oder SQL Zeichenfolge.
BOOL CanUpdate();
Rückgabewert
Nonzero, wenn Sie die Abfragedef ändern dürfen; andernfalls 0.
Bemerkungen
Sie können die Abfragedef ändern, wenn:
Sie basiert nicht auf einer Datenbank, die schreibgeschützt geöffnet ist.
Sie verfügen über Aktualisierungsberechtigungen für die Datenbank.
Dies hängt davon ab, ob Sie Sicherheitsfeatures implementiert haben. MFC bietet keine Unterstützung für sicherheit; Sie müssen sie selbst implementieren, indem Sie DAO direkt oder mithilfe von Microsoft Access aufrufen. Weitere Informationen finden Sie im Thema "Berechtigungseigenschaft" in der DAO-Hilfe.
CDaoQueryDef::CDaoQueryDef
Erstellt ein CDaoQueryDef
-Objekt.
CDaoQueryDef(CDaoDatabase* pDatabase);
Parameter
pDatabase
Ein Zeiger auf ein geöffnetes CDaoDatabase-Objekt .
Bemerkungen
Das Objekt kann eine vorhandene Abfrage darstellen, die in der QueryDefs-Auflistung der Datenbank gespeichert ist, eine neue Abfrage, die in der Auflistung gespeichert werden soll, oder eine temporäre Abfrage, die nicht gespeichert werden soll. Ihr nächster Schritt hängt vom Typ der Abfragedef ab:
Wenn das Objekt eine vorhandene Abfragedef darstellt, rufen Sie die Open-Memberfunktion des Objekts auf, um sie zu initialisieren.
Wenn das Objekt eine neue abfragedef darstellt, die gespeichert werden soll, rufen Sie die Create-Memberfunktion des Objekts auf. Dadurch wird das Objekt zur QueryDefs-Auflistung der Datenbank hinzugefügt. Rufen Sie dann Memberfunktionen auf
CDaoQueryDef
, um die Attribute des Objekts festzulegen. Rufen Sie schließlich "Anfügen" auf.Wenn das Objekt eine temporäre Abfragedef darstellt (nicht in der Datenbank gespeichert werden soll), wird eine
Create
leere Zeichenfolge für den Namen der Abfrage übergeben. Initialisieren Sie nach dem AufrufCreate
die Abfragedef, indem Sie ihre Attribute direkt festlegen. Rufen SieAppend
nicht auf.
Um die Attribute der Abfragedef festzulegen, können Sie die Memberfunktionen "SetName", " SetSQL", " SetConnect", " SetODBCTimeout" und " SetReturnsRecords " verwenden.
Wenn Sie mit dem Querydef-Objekt fertig sind, rufen Sie die Funktion "Schließen "-Member auf. Wenn Sie einen Zeiger auf die Abfragedef haben, verwenden Sie den delete
Operator, um das C++-Objekt zu zerstören.
CDaoQueryDef::Close
Rufen Sie diese Memberfunktion auf, wenn Sie mit dem Querydef-Objekt fertig sind.
virtual void Close();
Bemerkungen
Durch das Schließen der Abfragedef wird das zugrunde liegende DAO-Objekt freigegeben, aber das gespeicherte DAO querydef-Objekt oder das C++ CDaoQueryDef
-Objekt nicht zerstört. Dies entspricht nicht der CDaoDatabase::D eleteQueryDef, die die Abfragedef aus der QueryDefs-Auflistung der Datenbank in DAO löscht (wenn keine temporäre Abfragedef).
CDaoQueryDef::Create
Rufen Sie diese Memberfunktion auf, um eine neue gespeicherte Abfrage oder eine neue temporäre Abfrage zu erstellen.
virtual void Create(
LPCTSTR lpszName = NULL,
LPCTSTR lpszSQL = NULL);
Parameter
lpszName
Der eindeutige Name der In der Datenbank gespeicherten Abfrage. Ausführliche Informationen zur Zeichenfolge finden Sie im Thema "CreateQueryDef-Methode" in der DAO-Hilfe. Wenn Sie den Standardwert akzeptieren, wird eine leere Zeichenfolge erstellt, eine temporäre Abfragedef. Eine solche Abfrage wird nicht in der QueryDefs-Auflistung gespeichert.
Lpszsql
Die SQL Zeichenfolge, die die Abfrage definiert. Wenn Sie den Standardwert von NULL akzeptieren, müssen Sie "SetSQL " später aufrufen, um die Zeichenfolge festzulegen. Bis dahin ist die Abfrage nicht definiert. Sie können jedoch die nicht definierte Abfrage verwenden, um ein Recordset zu öffnen; Weitere Informationen finden Sie unter "Hinweise". Die SQL-Anweisung muss definiert werden, bevor Sie die Abfragedef an die QueryDefs-Auflistung anfügen können.
Bemerkungen
Wenn Sie einen Namen in lpszName übergeben, können Sie "Append " aufrufen, um die Abfragedef in der QueryDefs-Auflistung der Datenbank zu speichern. Andernfalls ist das Objekt eine temporäre Abfragedef und wird nicht gespeichert. In beiden Fällen befindet sich die Abfragedef in einem geöffneten Zustand, und Sie können es entweder verwenden, um ein CDaoRecordset-Objekt zu erstellen oder die Execute-Memberfunktion der Abfrage aufzurufen.
Wenn Sie keine SQL-Anweisung in lpszSQL angeben, können Sie die Abfrage Execute
nicht ausführen, aber Sie können es verwenden, um ein Recordset zu erstellen. In diesem Fall verwendet MFC die standardmäßige SQL-Anweisung des Recordsets.
CDaoQueryDef::Execute
Rufen Sie diese Memberfunktion auf, um die durch das querydef-Objekt definierte Abfrage auszuführen.
virtual void Execute(int nOptions = dbFailOnError);
Parameter
nOptions
Eine ganze Zahl, die die Merkmale der Abfrage bestimmt. Weitere Informationen finden Sie im Thema "Execute-Methode" in der DAO-Hilfe. Sie können den Bitweise-OR-Operator (|
) verwenden, um die folgenden Konstanten für dieses Argument zu kombinieren:
dbDenyWrite
Verweigern der Schreibberechtigung für andere Benutzer.dbInconsistent
Inkonsistente Updates.dbConsistent
Konsistente Updates.dbSQLPassThrough
SQL Durchlauf. Verursacht, dass die SQL-Anweisung an eine ODBC-Datenbank für die Verarbeitung übergeben wird.dbFailOnError
Standardwert. Rollbackupdates, wenn ein Fehler auftritt, und melden Sie den Fehler an den Benutzer.dbSeeChanges
Generieren Sie einen Laufzeitfehler, wenn ein anderer Benutzer Daten ändert, die Sie bearbeiten.
Hinweis
Eine Erläuterung der Begriffe "inkonsistent" und "konsistent" finden Sie im Thema "Execute-Methode" in der DAO-Hilfe.
Bemerkungen
Abfragedef-Objekte, die auf diese Weise für die Ausführung verwendet werden, können nur einen der folgenden Abfragetypen darstellen:
Aktionsabfragen
SQL Pass-Through-Abfragen
Execute
funktioniert nicht für Abfragen, die Datensätze zurückgeben, z. B. Auswahlabfragen. Execute
wird häufig für Massenvorgangsabfragen verwendet, z. B. UPDATE, INSERT oder SELECT INTO oder für DDL-Vorgänge (Data Definition Language).
Tipp
Die bevorzugte Möglichkeit zum Arbeiten mit ODBC-Datenquellen besteht darin, Tabellen an einen Microsoft Jet anzufügen (. MDB)-Datenbank. Weitere Informationen finden Sie im Thema "Zugreifen auf externe Datenbanken mit DAO" in der DAO-Hilfe.
Rufen Sie die Funktion "GetRecordsAffected" -Element des Querydef-Objekts auf, um die Anzahl der Datensätze zu ermitteln, die von dem letzten Aufruf betroffen sind Execute
. Gibt beispielsweise GetRecordsAffected
Informationen zur Anzahl gelöschter, aktualisierter oder eingefügter Datensätze zurück, wenn eine Aktionsabfrage ausgeführt wird. Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn kaskadierte Updates oder Löschungen wirksam sind.
Wenn Sie sowohl als dbInconsistent
dbConsistent
auch wenn Sie keines einschließen, ist das Ergebnis die Standardeinstellung. dbInconsistent
Execute
gibt kein Recordset zurück. Die Verwendung Execute
in einer Abfrage, die Datensätze auswählt, führt dazu, dass MFC eine Ausnahme vom Typ CDaoException auslöst.
CDaoQueryDef::GetConnect
Rufen Sie diese Memberfunktion auf, um die Verbindungszeichenfolge abzurufen, die der Datenquelle der Abfragedef zugeordnet ist.
CString GetConnect();
Rückgabewert
Eine CString , die die Verbindungszeichenfolge für die Abfragedef enthält.
Bemerkungen
Diese Funktion wird nur mit ODBC-Datenquellen und bestimmten ISAM-Treibern verwendet. Es wird nicht mit Microsoft Jet () verwendet. MDB)-Datenbanken; Gibt in diesem Fall GetConnect
eine leere Zeichenfolge zurück. Weitere Informationen finden Sie unter SetConnect.
Tipp
Die bevorzugte Möglichkeit, mit ODBC-Tabellen zu arbeiten, besteht darin, sie an eine Anfügen. MDB-Datenbank. Weitere Informationen finden Sie im Thema "Zugreifen auf externe Datenbanken mit DAO" in der DAO-Hilfe.
Informationen zu Verbindungszeichenfolgen finden Sie im Thema "Verbinden Eigenschaft" in der DAO-Hilfe.
CDaoQueryDef::GetDateCreated
Rufen Sie diese Memberfunktion auf, um das Datum abzurufen, an dem das Abfragedef-Objekt erstellt wurde.
COleDateTime GetDateCreated();
Rückgabewert
Ein COleDateTime-Objekt , das das Datum und die Uhrzeit der Abfragedef enthält.
Bemerkungen
Weitere Informationen finden Sie im Thema "DateCreated, LastUpdated Properties" in der DAO-Hilfe.
CDaoQueryDef::GetDateLastUpdated
Rufen Sie diese Memberfunktion auf, um das Datum abzurufen, an dem das Querydef-Objekt zuletzt aktualisiert wurde – wenn eine der Eigenschaften geändert wurde, z. B. den Namen, die SQL Zeichenfolge oder die Verbindungszeichenfolge.
COleDateTime GetDateLastUpdated();
Rückgabewert
Ein COleDateTime-Objekt , das das Datum und die Uhrzeit enthält, zu der die Abfragedef zuletzt aktualisiert wurde.
Bemerkungen
Weitere Informationen finden Sie im Thema "DateCreated, LastUpdated Properties" in der DAO-Hilfe.
CDaoQueryDef::GetFieldCount
Rufen Sie diese Memberfunktion auf, um die Anzahl der Felder in der Abfrage abzurufen.
short GetFieldCount();
Rückgabewert
Die Anzahl der Felder, die in der Abfrage definiert sind.
Bemerkungen
GetFieldCount
ist nützlich für die Schleife über alle Felder in der Abfragedef. Verwenden Sie GetFieldCount
dazu in Verbindung mit GetFieldInfo.
CDaoQueryDef::GetFieldInfo
Rufen Sie diese Memberfunktion auf, um verschiedene Arten von Informationen zu einem feld abzurufen, das in der Abfragedef definiert ist.
void GetFieldInfo(
int nIndex,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetFieldInfo(
LPCTSTR lpszName,
CDaoFieldInfo& fieldinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parameter
nIndex
Der nullbasierte Index des gewünschten Felds in der Fields-Auflistung der Abfragedef, um nach Index nach Suchen zu suchen.
Fieldinfo
Ein Verweis auf ein CDaoFieldInfo
Objekt, das die angeforderten Informationen zurückgibt.
dwInfoOptions
Optionen, die angeben, welche Informationen über das zu abrufende Feld enthalten sind. Die verfügbaren Optionen werden hier zusammen mit dem aufgeführt, was dazu führt, dass die Funktion zurückgegeben wird:
AFX_DAO_PRIMARY_INFO (Standard) Name, Typ, Größe, Attribute
AFX_DAO_SECONDARY_INFO Primärinformationen plus: Ordinalposition, Erforderlich, Zulässige Länge, Quellfeld, Fremdname, Quelltabelle, Sortierreihenfolge
AFX_DAO_ALL_INFO Primäre und sekundäre Informationen plus: Standardwert, Validierungstext, Gültigkeitsprüfungsregel
lpszName
Eine Zeichenfolge, die den Namen des gewünschten Felds enthält, für die Nachschlagefunktion nach Name. Sie können eine CString verwenden.
Bemerkungen
Eine Beschreibung der in Fieldinfo zurückgegebenen Informationen finden Sie in der CDaoFieldInfo-Struktur . Diese Struktur verfügt über Elemente, die den beschreibenden Informationen unter dwInfoOptions oben entsprechen. Wenn Sie eine Informationsstufe anfordern, erhalten Sie auch alle vorherigen Informationsstufen.
CDaoQueryDef::GetName
Rufen Sie diese Memberfunktion auf, um den Namen der Abfrage abzurufen, die durch die Abfragedef dargestellt wird.
CString GetName();
Rückgabewert
Der Name der Abfrage.
Bemerkungen
Abfragedef-Namen sind eindeutige benutzerdefinierte Namen. Weitere Informationen zu Abfragedefnamen finden Sie im Thema "Name-Eigenschaft" in der DAO-Hilfe.
CDaoQueryDef::GetODBCTimeout
Rufen Sie diese Memberfunktion auf, um das aktuelle Zeitlimit abzurufen, bevor eine Abfrage an eine ODBC-Datenquelle ausgedauert ist.
short GetODBCTimeout();
Rückgabewert
Die Anzahl von Sekunden, nach denen ein Timeout bei einer Abfrage eintritt.
Bemerkungen
Informationen zu diesem Zeitlimit finden Sie im Thema "ODBCTimeout-Eigenschaft" in der DAO-Hilfe.
Tipp
Die bevorzugte Möglichkeit zum Arbeiten mit ODBC-Tabellen besteht darin, sie an einen Microsoft Jet anzufügen (. MDB)-Datenbank. Weitere Informationen finden Sie im Thema "Zugreifen auf externe Datenbanken mit DAO" in der DAO-Hilfe.
CDaoQueryDef::GetParameterCount
Rufen Sie diese Memberfunktion auf, um die Anzahl der Parameter in der gespeicherten Abfrage abzurufen.
short GetParameterCount();
Rückgabewert
Die Anzahl der parameter, die in der Abfrage definiert sind.
Bemerkungen
GetParameterCount
ist nützlich für die Schleife aller Parameter in der Abfragedef. Verwenden Sie GetParameterCount
dazu in Verbindung mit GetParameterInfo.
Weitere Informationen finden Sie in den Themen "Parameterobjekt", "Parametersammlung" und "PARAMETERS-Deklaration (SQL)" in der DAO-Hilfe.
CDaoQueryDef::GetParameterInfo
Rufen Sie diese Memberfunktion auf, um Informationen zu einem in der Abfragedef definierten Parameter abzurufen.
void GetParameterInfo(
int nIndex,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetParameterInfo(
LPCTSTR lpszName,
CDaoParameterInfo& paraminfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parameter
nIndex
Der nullbasierte Index des gewünschten Parameters in der Parameters-Auflistung der Abfragedef, um nach Index nach Suchen zu suchen.
paraminfo
Ein Verweis auf ein CDaoParameterInfo-Objekt , das die angeforderten Informationen zurückgibt.
dwInfoOptions
Optionen, die angeben, welche Informationen über den zu abrufenden Parameter enthalten sind. Die verfügbare Option wird hier zusammen mit dem aufgeführt, was dazu führt, dass die Funktion zurückgegeben wird:
- AFX_DAO_PRIMARY_INFO (Standardname), Typ
lpszName
Eine Zeichenfolge, die den Namen des gewünschten Parameters enthält, für die Nachschlagevorgang nach Name. Sie können eine CString verwenden.
Bemerkungen
Eine Beschreibung der in paraminfo zurückgegebenen Informationen finden Sie in der CDaoParameterInfo-Struktur . Diese Struktur verfügt über Elemente, die den beschreibenden Informationen unter dwInfoOptions oben entsprechen.
Weitere Informationen finden Sie im Thema "PARAMETERS-Deklaration (SQL)" in der DAO-Hilfe.
CDaoQueryDef::GetParamValue
Rufen Sie diese Memberfunktion auf, um den aktuellen Wert des angegebenen Parameters abzurufen, der in der Parametersammlung der Abfragedef gespeichert ist.
virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);
Parameter
lpszName
Der Name des gewünschten Parameters, dessen Wert Sie wünschen, für die Nachschlagevorgänge nach Dem Namen.
nIndex
Der nullbasierte Index des Parameters in der Parameters-Auflistung der Abfragedef, für die Nachschlagevorgang nach Index. Sie können diesen Wert mit Aufrufen von GetParameterCount und GetParameterInfo abrufen.
Rückgabewert
Ein Objekt der Klasse COleVariant , das den Wert des Parameters enthält.
Bemerkungen
Sie können auf den Parameter entweder nach Name oder nach ihrer Ordinalposition in der Auflistung zugreifen.
Weitere Informationen finden Sie im Thema "PARAMETERS-Deklaration (SQL)" in der DAO-Hilfe.
CDaoQueryDef::GetRecords Betroffen
Rufen Sie diese Memberfunktion auf, um festzustellen, wie viele Datensätze von dem letzten Aufruf von Execute betroffen waren.
long GetRecordsAffected();
Rückgabewert
Die Anzahl der betroffenen Datensätze.
Bemerkungen
Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn kaskadierte Updates oder Löschungen wirksam sind.
Weitere Informationen finden Sie im Thema "RecordsAffected Property" in der DAO-Hilfe.
CDaoQueryDef::GetReturnsRecords
Rufen Sie diese Memberfunktion auf, um festzustellen, ob die Abfragedef auf einer Abfrage basiert, die Datensätze zurückgibt.
BOOL GetReturnsRecords();
Rückgabewert
Nonzero, wenn die Abfragedef auf einer Abfrage basiert, die Datensätze zurückgibt; andernfalls 0.
Bemerkungen
Diese Memberfunktion wird nur für SQL Pass-Through-Abfragen verwendet. Weitere Informationen zu SQL Abfragen finden Sie in der Funktion "Member ausführen". Weitere Informationen zum Arbeiten mit SQL Pass-Through-Abfragen finden Sie in der Elementfunktion "SetReturnsRecords".
Weitere Informationen finden Sie im Thema "ReturnsRecords-Eigenschaft" in der DAO-Hilfe.
CDaoQueryDef::GetSQL
Rufen Sie diese Memberfunktion auf, um die SQL-Anweisung abzurufen, die die Abfrage definiert, auf der die Abfragedef basiert.
CString GetSQL();
Rückgabewert
Die SQL-Anweisung, die die Abfrage definiert, auf der die Abfragedef basiert.
Bemerkungen
Sie werden dann wahrscheinlich die Zeichenfolge für Schlüsselwörter, Tabellennamen usw. analysieren.
Weitere Informationen finden Sie unter den Themen "SQL Eigenschaft", "Vergleich von Microsoft Jet Datenbank-Engine SQL und ANSI SQL", und "Abfragen einer Datenbank mit SQL in Code" in DER DAO-Hilfe.
CDaoQueryDef::GetType
Rufen Sie diese Memberfunktion auf, um den Abfragetyp der Abfragedef zu bestimmen.
short GetType();
Rückgabewert
Der Vom Abfragedef definierte Abfragetyp. Weitere Informationen finden Sie unter "Hinweise".
Bemerkungen
Der Abfragetyp wird festgelegt, was Sie in der SQL Zeichenfolge der Abfrage angeben, wenn Sie die Abfragedef erstellen oder eine vorhandene SetSQL-Memberfunktion aufrufen. Der abfragetyp, der von dieser Funktion zurückgegeben wird, kann eine der folgenden Werte sein:
dbQSelect
AuswählendbQAction
-AktiondbQCrosstab
KreuztabelledbQDelete
DeletedbQUpdate
UpdatedbQAppend
AnfügendbQMakeTable
Make-TabledbQDDL
DatendefinitiondbQSQLPassThrough
Pass-ThroughdbQSetOperation
UniondbQSPTBulk
Wird verwendet,dbQSQLPassThrough
um eine Abfrage anzugeben, die keine Datensätze zurückgibt.
Hinweis
Um eine SQL Pass-Through-Abfrage zu erstellen, legen Sie die dbSQLPassThrough
Konstante nicht fest. Dies wird automatisch vom Microsoft Jet-Datenbankmodul festgelegt, wenn Sie ein Abfragedef-Objekt erstellen und die Verbindungszeichenfolge festlegen.
Informationen zu SQL Zeichenfolgen finden Sie unter GetSQL. Informationen zu Abfragetypen finden Sie unter Execute.
CDaoQueryDef::IsOpen
Rufen Sie diese Memberfunktion auf, um festzustellen, ob das CDaoQueryDef
Objekt derzeit geöffnet ist.
BOOL IsOpen() const;
Rückgabewert
Nonzero, wenn das CDaoQueryDef
Objekt derzeit geöffnet ist; andernfalls 0.
Bemerkungen
Eine Abfragedef muss sich in einem geöffneten Zustand befinden, bevor Sie es zum Aufrufen von Execute oder zum Erstellen eines CDaoRecordset-Objekts verwenden. Wenn Sie eine Abfragedef in einen geöffneten Zustandsaufruf einfügen möchten, können Sie entweder "Create " (für eine neue Abfragedef ) oder " Open" (für eine vorhandene Abfragedef) erstellen.
CDaoQueryDef::m_pDatabase
Enthält einen Zeiger auf das CDaoDatabase-Objekt , das dem Querydef-Objekt zugeordnet ist.
Bemerkungen
Verwenden Sie diesen Zeiger, wenn Sie direkt auf die Datenbank zugreifen müssen , z. B. zum Abrufen von Zeigern auf andere Abfragedef- oder Recordsetobjekte in den Sammlungen der Datenbank.
CDaoQueryDef::m_pDAOQueryDef
Enthält einen Zeiger auf die OLE-Schnittstelle für das zugrunde liegende DAO querydef-Objekt.
Bemerkungen
Dieser Zeiger wird für Vollständigkeit und Konsistenz mit den anderen Klassen bereitgestellt. Da MFC jedoch eher vollständig DAO-Abfragedefs kapselt, sind Sie wahrscheinlich nicht erforderlich. Wenn Sie es verwenden, tun Sie dies vorsichtig , insbesondere ändern Sie den Wert des Zeigers nicht, wenn Sie wissen, was Sie tun.
CDaoQueryDef::Öffnen
Rufen Sie diese Memberfunktion auf, um eine abfragedef zu öffnen, die zuvor in der QueryDefs-Auflistung der Datenbank gespeichert wurde.
virtual void Open(LPCTSTR lpszName = NULL);
Parameter
lpszName
Eine Zeichenfolge, die den Namen der gespeicherten Abfragedef enthält, die geöffnet werden soll. Sie können eine CString verwenden.
Bemerkungen
Nachdem die Abfragedef geöffnet ist, können Sie seine Execute-Memberfunktion aufrufen oder die Abfragedef verwenden, um ein CDaoRecordset-Objekt zu erstellen.
CDaoQueryDef::SetConnect
Rufen Sie diese Memberfunktion auf, um die Verbindungszeichenfolge des Querydef-Objekts festzulegen.
void SetConnect(LPCTSTR lpszConnect);
Parameter
lpszConnect
Eine Zeichenfolge, die eine Verbindungszeichenfolge für das zugeordnete CDaoDatabase-Objekt enthält.
Bemerkungen
Die Verbindungszeichenfolge wird verwendet, um zusätzliche Informationen an ODBC und bestimmte ISAM-Treiber nach Bedarf zu übergeben. Es wird nicht für Microsoft Jet () verwendet. MDB)-Datenbanken.
Tipp
Die bevorzugte Möglichkeit, mit ODBC-Tabellen zu arbeiten, besteht darin, sie an eine Anfügen. MDB-Datenbank.
Legen Sie vor dem Ausführen einer Abfragedef, die eine SQL Pass-Through-Abfrage an eine ODBC-Datenquelle darstellt, die Verbindungszeichenfolge mit SetConnect
und rufen Sie SetReturnsRecords auf, um anzugeben, ob die Abfrage Datensätze zurückgibt.
Weitere Informationen zur Struktur und Beispiele für Verbindungszeichenfolgenkomponenten finden Sie im Thema "Verbinden Eigenschaft" in der DAO-Hilfe.
CDaoQueryDef::SetName
Rufen Sie diese Memberfunktion auf, wenn Sie den Namen einer Abfragedef ändern möchten, die nicht vorübergehend ist.
void SetName(LPCTSTR lpszName);
Parameter
lpszName
Eine Zeichenfolge, die den neuen Namen für eine nichttemporäre Abfrage im zugeordneten CDaoDatabase-Objekt enthält.
Bemerkungen
Abfragedef-Namen sind eindeutige, benutzerdefinierte Namen. Sie können aufrufen SetName
, bevor das QueryDef-Objekt an die QueryDefs-Auflistung angefügt wird.
CDaoQueryDef::SetODBCTimeout
Rufen Sie diese Memberfunktion auf, um das Zeitlimit festzulegen, bevor eine Abfrage auf eine ODBC-Datenquelle ausgezeitet ist.
void SetODBCTimeout(short nODBCTimeout);
Parameter
nODBCTimeout
Die Anzahl von Sekunden, nach denen ein Timeout bei einer Abfrage eintritt.
Bemerkungen
Mit dieser Memberfunktion können Sie die Standardanzahl von Sekunden außer Kraft setzen, bevor nachfolgende Vorgänge in der verbundenen Datenquelle "Timeout" ausgeführt werden. Ein Vorgang kann aufgrund von Netzwerkzugriffsproblemen, übermäßiger Abfrageverarbeitungszeit und so weiter zeitlos sein. Rufen Sie SetODBCTimeout
vor dem Ausführen einer Abfrage mit dieser Abfragedef auf, wenn Sie den Abfragetimeoutwert ändern möchten. (Da ODBC Verbindungen wiederverwendet, ist der Timeoutwert für alle Clients in derselben Verbindung identisch.)
Der Standardwert für Abfragetimeouts beträgt 60 Sekunden.
CDaoQueryDef::SetParamValue
Rufen Sie diese Memberfunktion auf, um den Wert eines Parameters in der Abfragedef zur Laufzeit festzulegen.
virtual void SetParamValue(
LPCTSTR lpszName,
const COleVariant& varValue);
virtual void SetParamValue(
int nIndex,
const COleVariant& varValue);
Parameter
lpszName
Der Name des Parameters, dessen Wert Sie festlegen möchten.
varValue
Der zu festlegende Wert; siehe Hinweise.
nIndex
Die Ordinalposition des Parameters in der Parametersammlung der Abfragedef. Sie können diesen Wert mit Aufrufen von GetParameterCount und GetParameterInfo abrufen.
Bemerkungen
Der Parameter muss bereits im Rahmen der SQL Zeichenfolge der Abfrage eingerichtet worden sein. Sie können auf den Parameter entweder nach Name oder nach ihrer Ordinalposition in der Auflistung zugreifen.
Geben Sie den Wert an, der als COleVariant
Objekt festgelegt werden soll. Informationen zum Festlegen des gewünschten Werts und des Typs in Ihrem COleVariant
Objekt finden Sie unter Klasse COleVariant.
CDaoQueryDef::SetReturnsRecords
Rufen Sie diese Memberfunktion als Teil des Prozesses zum Einrichten einer SQL Pass-Through-Abfrage an eine externe Datenbank auf.
void SetReturnsRecords(BOOL bReturnsRecords);
Parameter
bReturnsRecords
Übergeben Sie TRUE, wenn die Abfrage in einer externen Datenbank Datensätze zurückgibt; andernfalls FALSE.
Bemerkungen
In diesem Fall müssen Sie die Abfragedef erstellen und seine Eigenschaften mithilfe anderer CDaoQueryDef
Memberfunktionen festlegen. Eine Beschreibung externer Datenbanken finden Sie unter SetConnect.
CDaoQueryDef::SetSQL
Rufen Sie diese Memberfunktion auf, um die SQL-Anweisung festzulegen, die die Abfragedef ausführt.
void SetSQL(LPCTSTR lpszSQL);
Parameter
Lpszsql
Eine Zeichenfolge mit einer vollständigen SQL-Anweisung, die für die Ausführung geeignet ist. Die Syntax dieser Zeichenfolge hängt von den DBMS ab, die Ihre Abfrageziele angibt. Eine Diskussion der Syntax, die im Microsoft Jet-Datenbankmodul verwendet wird, finden Sie im Thema "Erstellen von SQL Anweisungen in Code" in der DAO-Hilfe.
Bemerkungen
Eine typische Verwendung besteht SetSQL
darin, ein Querydef-Objekt für die Verwendung in einer SQL Pass-Through-Abfrage einzurichten. (Die Syntax von SQL Pass-Through-Abfragen auf Ihrem Ziel-DBMS finden Sie in der Dokumentation für Ihre DBMS.)
Weitere Informationen
CObject-Klasse
Hierarchiediagramm
CDaoRecordset-Klasse
CDaoDatabase-Klasse
CDaoTableDef-Klasse
CDaoException-Klasse