Teilen über


CDaoQueryDef-Klasse

Stellt eine Abfragedefinition ("Querydef") dar, die in einer Datenbank gespeichert ist.

Hinweis

Das Datenzugriffsobjekt (Data Access Object, DAO) wird über Office 2013 unterstützt. DAO 3.6 ist die endgültige Version und veraltet.

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 Append Sie sie auf, 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 von der Abfragedef definierten Felder zurück.
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 Abfrage ausgeführt wird, die bestimmt, wie lange die Ausführung der Abfrageaktion zulässig ist.
CDaoQueryDef::GetParameterCount Gibt die Anzahl der parameter zurück, die für die Abfrage definiert sind.
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 vom Querydef definierte Abfrage Datensätze zurückgibt.
CDaoQueryDef::GetSQL Gibt die SQL-Zeichenfolge zurück, die die von der Abfragedef definierte Abfrage angibt.
CDaoQueryDef::GetType Gibt den Abfragetyp zurück: Löschen, Aktualisieren, Anfügen, Tabellenerstellung 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 den Verbindungszeichenfolge für eine SQL-Pass-Through-Abfrage für eine ODBC-Datenquelle fest.
CDaoQueryDef::SetName Legt den Namen der gespeicherten Abfrage fest, wobei der Name ersetzt wird, der beim Erstellen der Abfrage verwendet wird.
CDaoQueryDef::SetODBCTimeout Legt den Timeoutwert fest, der von ODBC (für eine ODBC-Abfrage) verwendet wird, wenn die Querydef ausgeführt wird.
CDaoQueryDef::SetParamValue Legt den Wert eines angegebenen Parameters auf die Abfrage fest.
CDaoQueryDef::SetReturnsRecords Gibt an, ob die Querydef 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 von der 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.

Hinweise

Ein Querydef ist ein Datenzugriffsobjekt, das die SQL-Anweisung enthält, die eine Abfrage beschreibt, und dessen Eigenschaften, z. B. "Datum erstellt" und "ODBC-Timeout". Sie können auch temporäre Querydef-Objekte erstellen, ohne sie zu speichern, aber es ist praktisch – und viel effizienter – 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 Querydefs enthält.

Hinweis

Die DAO-Datenbankklassen unterscheiden sich von den Microsoft Foundation Class (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 auf DAO basierenden MFC-Klassen fähiger als die MFC-Klassen, die auf ODBC basieren; die DAO-basierten Klassen können über ein eigenes Datenbankmodul auf Daten zugreifen, einschließlich über ODBC-Treiber. 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.

Verbrauch

Verwenden Sie querydef-Objekte, um mit einer vorhandenen gespeicherten Abfrage zu arbeiten oder eine neue gespeicherte Abfrage oder temporäre Abfrage zu erstellen:

  1. Erstellen Sie in allen Fällen zuerst ein CDaoQueryDef Objekt, und geben Sie einen Zeiger auf das CDaoDatabase-Objekt an, zu dem die Abfrage gehört.

  2. Gehen Sie dann wie folgt vor, je nachdem, was Sie möchten:

    • Um eine vorhandene gespeicherte Abfrage zu verwenden, rufen Sie die Open-Memberfunktion des Querydef-Objekts auf, wobei der Name der gespeicherten Abfrage angegeben wird.

    • Rufen Sie zum Erstellen einer neuen gespeicherten Abfrage die Create-Memberfunktion 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 Abfrage in einen geöffneten Zustand ein, sodass Sie nach dem Aufrufen nicht aufrufen Create Open.

    • Rufen Sie zum Erstellen einer temporären Abfragedef auf Create. Übergeben Sie eine leere Zeichenfolge für den Abfragenamen. Rufen Sie nicht auf Append.

Wenn Sie mit der Verwendung eines querydef-Objekts fertig sind, rufen Sie die Close-Member-Funktion auf, und zerstören Sie dann das Querydef-Objekt.

Tipp

Die einfachste Möglichkeit zum Erstellen gespeicherter Abfragen besteht darin, sie zu erstellen und sie 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 einen der folgenden Zwecke verwenden:

  • So erstellen Sie ein CDaoRecordset Objekt

  • So 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ügen, Tabellenerstellung, Datendefinition, SQL-Pass-Through-, Union- und Massenabfragen. Der Inhalt der von Ihnen angegebenen SQL-Anweisung bestimmt den Abfragetyp. Informationen zu Abfragetypen finden Sie in den Execute Funktionen und GetType Memberfunktionen. Recordsets werden häufig für Zeilenrücklaufabfragen verwendet, in der Regel Abfragen mit select ... FROM-Schlüsselwörter . Execute wird am häufigsten für Massenvorgänge verwendet. Weitere Informationen finden Sie unter Execute und CDaoRecordset.

Querydefs und Recordsets

Um ein Querydef-Objekt zum Erstellen eines CDaoRecordset Objekts zu verwenden, erstellen oder öffnen Sie in der Regel eine Abfragedef wie zuvor beschrieben. Erstellen Sie dann ein Recordset-Objekt, und übergeben Sie beim Aufrufen CDaoRecordset::Openeinen Zeiger auf das Querydef-Objekt. Die übergebene Abfrage muss sich in einem geöffneten Zustand befinden. Weitere Informationen finden Sie unter CDaoRecordset-Klasse.

Sie können einen Querydef nicht verwenden, um ein Recordset (die häufigste Verwendung für eine Abfragedef) zu erstellen, es sei denn, es befindet sich in einem geöffneten Zustand. Setzen Sie die Abfrage in einen geöffneten Zustand, indem Sie entweder Open oder Create.

Externe Datenbanken

Querydef-Objekte sind die bevorzugte Methode, um den nativen SQL-Dialekt eines externen Datenbankmoduls zu verwenden. Sie können beispielsweise 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 Verbindungszeichenfolge s umgehen das Datenbankmodul und übergeben die Abfrage zur Verarbeitung direkt an den externen Datenbankserver.

Tipp

Die bevorzugte Methode zum Arbeiten mit ODBC-Tabellen 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

CObject

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();

Hinweise

Append speichert die Abfragedef in der Datenbank, indem das Objekt an die QueryDefs-Auflistung der Datenbank angefügt wird. 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 Abfrage ändern können , z. B. den Namen oder die SQL-Zeichenfolge zu ändern.

BOOL CanUpdate();

Rückgabewert

Nonzero, wenn Sie die Abfragedef ändern können; andernfalls 0.

Hinweise

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 "Permissions Property" in der DAO-Hilfe.

CDaoQueryDef::CDaoQueryDef

Erstellt ein CDaoQueryDef-Objekt.

CDaoQueryDef(CDaoDatabase* pDatabase);

Parameter

pDatabase
Ein Zeiger auf ein geöffnetes CDaoDatabase-Objekt .

Hinweise

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 es zu initialisieren.

  • Wenn das Objekt eine neue zu speichernde Abfrage darstellt, rufen Sie die Create-Memberfunktion des Objekts auf. Dadurch wird das Objekt der QueryDefs-Auflistung der Datenbank hinzugefügt. Rufen Sie CDaoQueryDef dann Memberfunktionen auf, um die Attribute des Objekts festzulegen. Rufen Sie schließlich "Append" auf.

  • Wenn das Objekt einen temporären Querydef darstellt (nicht in der Datenbank gespeichert werden soll), rufen Sie Createauf, und übergeben Sie eine leere Zeichenfolge für den Namen der Abfrage. Initialisieren Sie nach dem Aufrufen Createdie Abfragedef, indem Sie die Attribute direkt festlegen. Rufen Sie nicht auf Append.

Um die Attribute der Querydef festzulegen, können Sie die Memberfunktionen SetName, SetSQL, SetConnect, SetODBCTimeout und SetReturnsRecords verwenden.

Wenn Sie mit dem Querydef-Objekt fertig sind, rufen Sie dessen Close-Memberfunktion auf. Wenn Sie einen Zeiger auf den Querydef haben, verwenden Sie den delete Operator, um das C++-Objekt zu zerstören.

CDaoQueryDef::Close

Rufen Sie diese Memberfunktion auf, wenn Sie die Verwendung des querydef-Objekts abgeschlossen haben.

virtual void Close();

Hinweise

Durch das Schließen der Querydef wird das zugrunde liegende DAO-Objekt freigegeben, aber das gespeicherte DAO querydef-Objekt oder das C++ CDaoQueryDef -Objekt nicht zerstört. Dies ist nicht mit CDaoDatabase::D eleteQueryDef identisch, wodurch die Abfragedef aus der QueryDefs-Auflistung der Datenbank in DAO (wenn keine temporäre Abfragedef) gelöscht wird.

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 Abfrage, die in der Datenbank gespeichert ist. 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 später SetSQL 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 in den Hinweisen. Die SQL-Anweisung muss definiert werden, bevor Sie die Abfragedef an die QueryDefs-Auflistung anfügen können.

Hinweise

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 der Querydef in einem geöffneten Zustand, und Sie können es entweder verwenden, um ein CDaoRecordset-Objekt zu erstellen oder die Execute-Memberfunktion der Abfragedef aufzurufen.

Wenn Sie keine SQL-Anweisung in lpszSQL bereitstellen, können Sie die Abfrage Execute nicht ausführen, aber Sie können sie verwenden, um ein Recordset zu erstellen. In diesem Fall verwendet MFC die SQL-Standardanweisungen des Recordsets.

CDaoQueryDef::Execute

Rufen Sie diese Memberfunktion auf, um die vom Querydef-Objekt definierte Abfrage auszuführen.

virtual void Execute(int nOptions = dbFailOnError);

Parameter

nOptions
Eine ganze Zahl, die die Merkmale der Abfrage bestimmt. Verwandte Informationen finden Sie im Thema "Execute Method" 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-Pass-Through. Bewirkt, dass die SQL-Anweisung zur Verarbeitung an eine ODBC-Datenbank übergeben wird.

  • dbFailOnError Standardwert. Führen Sie ein Rollback von Updates durch, 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 Method" in der DAO-Hilfe.

Hinweise

Querydef-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. Executewird häufig für Massenvorgangsabfragen wie UPDATE, INSERT oder SELECT INTO oder für DDL-Vorgänge (Data Definition Language) verwendet.

Tipp

Die bevorzugte Methode zum Arbeiten mit ODBC-Datenquellen ist das Anfügen von Tabellen an einen Microsoft Jet (). MDB)-Datenbank. Weitere Informationen finden Sie im Thema "Zugreifen auf externe Datenbanken mit DAO" in der DAO-Hilfe.

Rufen Sie die GetRecordsAffected-Memberfunktion des Querydef-Objekts auf, um die Anzahl der Datensätze zu ermitteln, die vom letzten Execute Aufruf betroffen sind. Gibt beispielsweise GetRecordsAffected Informationen zur Anzahl der gelöschten, aktualisierten oder eingefügten Datensätze zurück, wenn eine Aktionsabfrage ausgeführt wird. Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn Aktualisierungen oder Löschweitergaben wirksam sind.

Wenn Sie beide dbInconsistent und dbConsistent oder 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, bewirkt, 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

A CString containing the Verbindungszeichenfolge for the querydef.

Hinweise

Diese Funktion wird nur mit ODBC-Datenquellen und bestimmten ISAM-Treibern verwendet. Es wird nicht mit Microsoft Jet(.MDB)-Datenbanken verwendet. In diesem Fall GetConnect wird eine leere Zeichenfolge zurückgegeben. Weitere Informationen finden Sie unter SetConnect.

Tipp

Die bevorzugte Methode zum Arbeiten mit ODBC-Tabellen ist das Anfügen an eine . MDB-Datenbank. Weitere Informationen finden Sie im Thema "Zugreifen auf externe Datenbanken mit DAO" in der DAO-Hilfe.

Informationen zu Verbindungszeichenfolge s finden Sie im Thema "Connect-Eigenschaft" in der DAO-Hilfe.

CDaoQueryDef::GetDateCreated

Rufen Sie diese Memberfunktion auf, um das Datum abzurufen, an dem das Querydef-Objekt erstellt wurde.

COleDateTime GetDateCreated();

Rückgabewert

Ein COleDateTime-Objekt , das das Datum und die Uhrzeit enthält, zu dem die Abfragedef erstellt wurde.

Hinweise

Verwandte 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 seiner 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 dem die Abfragedef zuletzt aktualisiert wurde.

Hinweise

Verwandte 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 in der Abfrage definierten Felder.

Hinweise

GetFieldCount ist nützlich für das Durchlaufen aller Felder in der Abfragedef. Zu diesem Zweck verwenden Sie GetFieldCount es 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 Abfrage für die Suche nach Index.

Fieldinfo
Ein Verweis auf ein CDaoFieldInfo Objekt, das die angeforderten Informationen zurückgibt.

dwInfoOptions
Optionen, die angeben, welche Informationen zu dem abzurufenden 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äre Informationen plus: Ordnungsposition, Erforderlich, Leere Länge zulassen, Quellfeld, Fremdname, Quelltabelle, Sortierreihenfolge

  • AFX_DAO_ALL_INFO Primäre und sekundäre Informationen plus: Standardwert, Gültigkeitstext, Gültigkeitsprüfungsregel

lpszName
Eine Zeichenfolge mit dem Namen des gewünschten Felds für die Nachschlagefunktion nach Name. Sie können eine CString-Schleife verwenden.

Hinweise

Eine Beschreibung der in Fieldinfo zurückgegebenen Informationen finden Sie in der CDaoFieldInfo-Struktur. Diese Struktur enthält 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 Abfrage dargestellt wird.

CString GetName();

Rückgabewert

Der Name der Abfrage.

Hinweise

Abfragenamen sind eindeutige benutzerdefinierte Namen. Weitere Informationen zu Abfragenamen finden Sie im Thema "Name Property" in der DAO-Hilfe.

CDaoQueryDef::GetODBCTimeout

Rufen Sie diese Memberfunktion auf, um den aktuellen Zeitgrenzwert abzurufen, bevor eine Abfrage an eine ODBC-Datenquelle timeout auftritt.

short GetODBCTimeout();

Rückgabewert

Die Anzahl der Sekunden, bevor ein Abfrage-Zeitüberschreitungsüberschreitung erfolgt.

Hinweise

Informationen zu diesem Zeitlimit finden Sie im Thema "ODBCTimeout-Eigenschaft" in der DAO-Hilfe.

Tipp

Die bevorzugte Methode 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.

Hinweise

GetParameterCount ist nützlich, um alle Parameter in der Abfrage zu durchlaufen. Zu diesem Zweck verwenden Sie GetParameterCount es mit GetParameterInfo.

Verwandte Informationen finden Sie in der DAO-Hilfe unter den Themen "Parameter-Objekt", "Parameters-Auflistung" und "PARAMETERS-Deklaration (SQL)".

CDaoQueryDef::GetParameterInfo

Rufen Sie diese Memberfunktion auf, um Informationen zu einem parameter abzurufen, der in der Abfragedef definiert ist.

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 Abfrage für die Suche nach Index.

paraminfo
Ein Verweis auf ein CDaoParameterInfo -Objekt, das die angeforderten Informationen zurückgibt.

dwInfoOptions
Optionen, die angeben, welche Informationen zum abzurufenden Parameter enthalten. 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 (Standard) Name, Typ

lpszName
Eine Zeichenfolge, die den Namen des gewünschten Parameters enthält, für die Suche nach Namen. Sie können eine CString-Schleife verwenden.

Hinweise

Eine Beschreibung der zurückgegebenen Informationen finden Sie in paraminfoder CDaoParameterInfo Struktur. Diese Struktur enthält Elemente, die den oben beschriebenen dwInfoOptions Informationen entsprechen.

Verwandte 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 Parameters-Auflistung der Abfrage gespeichert ist.

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

Parameter

lpszName
Der Name des Parameters, dessen Wert Sie verwenden möchten, für die Suche nach Namen.

nIndex
Der nullbasierte Index des Parameters in der Parameters-Auflistung der Abfrage für die Suche 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.

Hinweise

Sie können auf den Parameter entweder anhand des Namens oder der Ordnungsposition in der Auflistung zugreifen.

Verwandte Informationen finden Sie im Thema "PARAMETERS-Deklaration (SQL)" in der DAO-Hilfe.

CDaoQueryDef::GetRecordsAffected

Rufen Sie diese Memberfunktion auf, um zu bestimmen, wie viele Datensätze vom letzten Aufruf von Execute betroffen sind.

long GetRecordsAffected();

Rückgabewert

Die Anzahl der betroffenen Datensätze.

Hinweise

Die zurückgegebene Anzahl spiegelt keine Änderungen in verwandten Tabellen wider, wenn Aktualisierungen oder Löschweitergaben wirksam sind.

Verwandte Informationen finden Sie im Thema "RecordsAffected Property" in der DAO-Hilfe.

CDaoQueryDef::GetReturnsRecords

Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob die Abfrage 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.

Hinweise

Diese Memberfunktion wird nur für SQL-Pass-Through-Abfragen verwendet. Weitere Informationen zu SQL-Abfragen finden Sie in der Execute-Memberfunktion . Weitere Informationen zum Arbeiten mit SQL-Pass-Through-Abfragen finden Sie in der Memberfunktion "SetReturnsRecords ".

Verwandte 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 Abfrage basiert.

CString GetSQL();

Rückgabewert

Die SQL-Anweisung, die die Abfrage definiert, auf der die Abfrage basiert.

Hinweise

Sie können die Zeichenfolge für Schlüsselwörter, Tabellennamen usw. analysieren.

Verwandte Informationen finden Sie in 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 ermitteln.

short GetType();

Rückgabewert

Der Typ der Abfrage, die von der Abfragedef definiert wird. Werte finden Sie in den Hinweisen.

Hinweise

Der Abfragetyp wird durch das festgelegt, was Sie in der SQL-Zeichenfolge der Abfrage angeben, wenn Sie die Abfragedef erstellen oder die SetSQL-Memberfunktion einer vorhandenen Abfragedef aufrufen. Der von dieser Funktion zurückgegebene Abfragetyp kann einer der folgenden Werte sein:

  • dbQSelect Auswählen

  • dbQAction-Aktion

  • dbQCrosstab Kreuztabelle

  • dbQDelete Delete

  • dbQUpdate Update

  • dbQAppend Anfügen

  • dbQMakeTable Tabellenerstellung

  • dbQDDL Datendefinition

  • dbQSQLPassThrough Pass-Through

  • dbQSetOperation Vereinigung

  • dbQSPTBulk Wird verwendet dbQSQLPassThrough , um eine Abfrage anzugeben, die keine Datensätze zurückgibt.

Hinweis

Wenn Sie eine SQL-Pass-Through-Abfrage erstellen möchten, legen Sie die dbSQLPassThrough Konstante nicht fest. Dies wird automatisch vom Microsoft Jet-Datenbankmodul festgelegt, wenn Sie ein Querydef-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 zu bestimmen, ob das CDaoQueryDef Objekt derzeit geöffnet ist.

BOOL IsOpen() const;

Rückgabewert

Nonzero, wenn das CDaoQueryDef Objekt zurzeit geöffnet ist; andernfalls 0.

Hinweise

Eine Abfragedef muss sich in einem geöffneten Zustand befinden, bevor Sie es zum Aufrufen Execute oder Erstellen eines CDaoRecordset Objekts verwenden. Um eine Abfragedef in einen geöffneten Zustand zu versetzen, rufen Sie entweder Create (für eine neue Abfragedef) oder Open (für eine vorhandene Abfragedef) auf.

CDaoQueryDef::m_pDatabase

Enthält einen Zeiger auf das CDaoDatabase -Objekt, das dem Querydef -Objekt zugeordnet ist.

Hinweise

Verwenden Sie diesen Zeiger, wenn Sie direkt auf die Datenbank zugreifen müssen. Um z. B. Zeiger auf andere Querydef- oder Recordset-Objekte in den Auflistungen der Datenbank abzurufen.

CDaoQueryDef::m_pDAOQueryDef

Enthält einen Zeiger auf die OLE-Schnittstelle für das zugrunde liegende DAO querydef -Objekt.

Hinweise

Dieser Zeiger wird für Vollständigkeit und Konsistenz mit den anderen Klassen bereitgestellt. Da MFC jedoch eher vollständig DAO-Abfragedefs kapselt, ist dies unwahrscheinlich. Wenn Sie es verwenden, tun Sie dies vorsichtig. Ändern Sie insbesondere nicht den Wert des Zeigers, es sei denn, Sie wissen, was Sie tun.

CDaoQueryDef::Open

Rufen Sie diese Memberfunktion auf, um eine zuvor in der QueryDefs-Auflistung der Datenbank gespeicherte Abfragedef zu öffnen.

virtual void Open(LPCTSTR lpszName = NULL);

Parameter

lpszName
Eine Zeichenfolge, die den Namen der zu öffnenden gespeicherten Abfrage enthält. Sie können eine CString-Schleife verwenden.

Hinweise

Sobald die Abfrage geöffnet ist, können Sie dessen Execute Memberfunktion aufrufen oder die Querydef 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.

Hinweise

Die Verbindungszeichenfolge wird verwendet, um bei Bedarf zusätzliche Informationen an ODBC- und bestimmte ISAM-Treiber zu übergeben. Sie wird nicht für Microsoft Jet(.MDB)-Datenbanken verwendet.

Tipp

Die bevorzugte Methode zum Arbeiten mit ODBC-Tabellen ist das Anfügen an eine . MDB-Datenbank.

Legen Sie vor dem Ausführen einer Abfrage, die eine SQL-Pass-Through-Abfrage an eine ODBC-Datenquelle darstellt, die Verbindungszeichenfolge mit SetConnect "SetReturnsRecords" fest, um anzugeben, ob die Abfrage Datensätze zurückgibt.

Weitere Informationen zur Struktur des Verbindungszeichenfolge und Beispiele für Verbindungszeichenfolge-Komponenten finden Sie im Thema "Connect-Eigenschaft" in der DAO-Hilfe.

CDaoQueryDef::SetName

Rufen Sie diese Memberfunktion auf, wenn Sie den Namen einer abfragedef ändern möchten, die nicht temporär 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.

Hinweise

Abfragenamen 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 ein ODBC-Datenquellentimeout zurückgesetzt wird.

void SetODBCTimeout(short nODBCTimeout);

Parameter

nODBCTimeout
Die Anzahl der Sekunden, bevor ein Abfrage-Zeitüberschreitungsüberschreitung erfolgt.

Hinweise

Mit dieser Memberfunktion können Sie die Standardanzahl von Sekunden überschreiben, bevor nachfolgende Vorgänge für die verbundene Datenquelle "Timeout" ausgeführt werden. Ein Vorgang kann aufgrund von Netzwerkzugriffsproblemen, übermäßiger Abfrageverarbeitungszeit usw. zu einem Timeout führen. Rufen Sie den Aufruf 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 mit 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 festzulegende Wert; siehe Hinweise.

nIndex
Die Ordnungsposition des Parameters in der Parameters-Auflistung der Abfrage. Sie können diesen Wert mit Aufrufen von GetParameterCount und GetParameterInfo abrufen.

Hinweise

Der Parameter muss bereits als Teil der SQL-Zeichenfolge der Abfrage eingerichtet werden. Sie können auf den Parameter entweder anhand des Namens oder der Ordnungsposition in der Auflistung zugreifen.

Geben Sie den Wert an, der als COleVariant Objekt festgelegt werden soll. Informationen zum Festlegen des gewünschten Werts und Typs in Ihrem Objekt finden Sie unter COleVariant.For information about setting the desired value and type in your COleVariant object, see class COleVariant.

CDaoQueryDef::SetReturnsRecords

Rufen Sie diese Memberfunktion als Teil des Prozesses zum Einrichten einer SQL-Pass-Through-Abfrage für eine externe Datenbank auf.

void SetReturnsRecords(BOOL bReturnsRecords);

Parameter

bReturnsRecords
Übergeben Sie WAHR, wenn die Abfrage für eine externe Datenbank Datensätze zurückgibt. andernfalls FALSE.

Hinweise

In diesem Fall müssen Sie die Abfrage erstellen und dessen Eigenschaften mithilfe anderer CDaoQueryDef Memberfunktionen festlegen. Eine Beschreibung der externen Datenbanken finden Sie unter SetConnect.

CDaoQueryDef::SetSQL

Rufen Sie diese Memberfunktion auf, um die SQL-Anweisung festzulegen, die von der Querydef ausgeführt wird.

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 vom DBMS ab, auf das Ihre Abfrage ausgerichtet ist. Eine Erläuterung der syntax, die im Microsoft Jet-Datenbankmodul verwendet wird, finden Sie im Thema "Erstellen von SQL-Anweisungen im Code" in der DAO-Hilfe.

Hinweise

Eine typische Verwendung SetSQL ist das Einrichten eines Querydef-Objekts für die Verwendung in einer SQL-Pass-Through-Abfrage. (Die Syntax von SQL-Pass-Through-Abfragen für Ihr Ziel-DBMS finden Sie in der Dokumentation für Ihr DBMS.)

Siehe auch

CObject-Klasse
Hierarchiediagramm
CDaoRecordset Klasse
CDaoDatabase Klasse
CDaoTableDef Klasse
CDaoException Klasse