Sdílet prostřednictvím


CDaoQueryDef – třída

Představuje definici dotazu nebo "querydef", obvykle jednu uloženou v databázi.

Syntaxe

class CDaoQueryDef : public CObject

Členové

Veřejné konstruktory

Jméno popis
CDaoQueryDef::CDaoQueryDef CDaoQueryDef Vytvoří objekt. Další hovor Open nebo Createv závislosti na vašich potřebách.

Veřejné metody

Jméno popis
CDaoQueryDef::Append Připojí querydef do kolekce QueryDefs databáze jako uložený dotaz.
CDaoQueryDef::CanUpdate Vrátí nenulové hodnoty, pokud dotaz může aktualizovat databázi.
CDaoQueryDef::Close Zavře objekt querydef. Po dokončení zničí objekt C++.
CDaoQueryDef::Create Vytvoří podkladový objekt DAO querydef. Použijte ho jako dočasný dotaz nebo volání Append , které ho uloží do databáze.
CDaoQueryDef::Execute Spustí dotaz definovaný objektem querydef.
CDaoQueryDef::Get Připojení Vrátí připojovací řetězec přidružené k dotazu. Připojovací řetězec identifikuje zdroj dat. (Pouze pro předávací dotazy SQL, jinak prázdný řetězec.)
CDaoQueryDef::GetDateCreated Vrátí datum vytvoření uloženého dotazu.
CDaoQueryDef::GetDateLastUpdated Vrátí datum poslední aktualizace uloženého dotazu.
CDaoQueryDef::GetFieldCount Vrátí počet polí definovaných dotazem.
CDaoQueryDef::GetFieldInfo Vrátí informace o zadaném poli definovaném v dotazu.
CDaoQueryDef::GetName Vrátí název dotazu.
CDaoQueryDef::GetODBCTimeout Vrátí hodnotu časového limitu používaná rozhraním ODBC (pro dotaz ODBC) při spuštění dotazu. Určuje, jak dlouho se má akce dotazu dokončit.
CDaoQueryDef::GetParameterCount Vrátí počet parametrů definovaných pro dotaz.
CDaoQueryDef::GetParameterInfo Vrátí informace o zadaném parametru dotazu.
CDaoQueryDef::GetParamValue Vrátí hodnotu zadaného parametru dotazu.
CDaoQueryDef::GetRecordsAffect Vrátí počet záznamů ovlivněných akčním dotazem.
CDaoQueryDef::GetReturnsRecords Vrátí nenulové hodnoty, pokud dotaz definovaný dotazem vrátí záznamy.
CDaoQueryDef::GetSQL Vrátí řetězec SQL, který určuje dotaz definovaný dotazem.
CDaoQueryDef::GetType Vrátí typ dotazu: delete, update, append, make-table atd.
CDaoQueryDef::IsOpen Vrátí nenulové hodnoty, pokud je objekt querydef otevřený a lze ho spustit.
CDaoQueryDef::Open Otevře existující dotazovacíef uložený v kolekci QueryDefs databáze.
CDaoQueryDef::Set Připojení Nastaví připojovací řetězec pro předávací dotaz SQL na zdroj dat ODBC.
CDaoQueryDef::SetName Nastaví název uloženého dotazu a nahradí název, který se použije při vytvoření dotazu.
CDaoQueryDef::SetODBCTimeout Nastaví hodnotu časového limitu používanou rozhraním ODBC (pro dotaz ODBC) při spuštění dotazu.
CDaoQueryDef::SetParamValue Nastaví hodnotu zadaného parametru na dotaz.
CDaoQueryDef::SetReturnsRecords Určuje, zda dotazdef vrací záznamy. Nastavení tohoto atributu na HODNOTU TRUE je platné pouze pro předávací dotazy SQL.
CDaoQueryDef::SetSQL Nastaví řetězec SQL, který určuje dotaz definovaný dotazem.

Veřejné datové členy

Jméno popis
CDaoQueryDef::m_pDAOQueryDef Ukazatel na rozhraní OLE pro základní objekt DAO querydef.
CDaoQueryDef::m_pDatabase Ukazatel na CDaoDatabase objekt, ke kterému je přidružen dotazování. Dotazování může být uloženo v databázi nebo ne.

Poznámky

Querydef je objekt pro přístup k datům, který obsahuje příkaz SQL, který popisuje dotaz, a jeho vlastnosti, například Datum vytvoření a Časový limit ODBC. Můžete také vytvořit dočasné objekty querydef, aniž byste je uložili, ale je to praktické – a mnohem efektivnější – ukládat často opakovaně používané dotazy v databázi. Objekt CDaoDatabase udržuje kolekci, která se nazývá QueryDefs kolekce, která obsahuje své uložené třídy querydefs.

Poznámka

Databázové třídy DAO se liší od databázových tříd MFC založených na Připojení ivity (ODBC). Všechny názvy databázových tříd DAO mají předponu CDao. Stále máte přístup ke zdrojům dat ODBC pomocí tříd DAO. Obecně platí, že třídy MFC založené na rozhraní DAO jsou schopny více než třídy MFC založené na rozhraní ODBC; třídy založené na rozhraní DAO mají přístup k datům, včetně prostřednictvím ovladačů ODBC, prostřednictvím vlastního databázového stroje. Třídy založené na DAO také podporují operace DDL (Data Definition Language), například přidávání tabulek prostřednictvím tříd, aniž by bylo nutné volat DAO přímo.

Využití

Pomocí objektů querydef můžete pracovat s existujícím uloženým dotazem nebo vytvořit nový uložený dotaz nebo dočasný dotaz:

  1. Ve všech případech nejprve vytvořte CDaoQueryDef objekt a zadejte ukazatel na objekt CDaoDatabase , do kterého dotaz patří.

  2. Pak postupujte podle toho, co chcete:

    • Pokud chcete použít existující uložený dotaz, zavolejte funkci Open member objektu querydef a zadejte název uloženého dotazu.

    • Pokud chcete vytvořit nový uložený dotaz, zavolejte funkci Create member objektu querydef a zadejte název dotazu. Potom voláním připojit uložte dotaz tak, že ho připojíte do kolekce QueryDefs databáze. Create vloží dotaz do otevřeného stavu, takže po volání nevoláte CreateOpen.

    • Chcete-li vytvořit dočasné dotazování, zavolejte Create. Předejte prázdný řetězec pro název dotazu. Nevolejte Append.

Jakmile dokončíte použití objektu querydef, zavolejte jeho funkci Zavřít člena; pak zničit objekt querydef.

Tip

Nejjednodušší způsob, jak vytvářet uložené dotazy, je vytvořit je a uložit je do databáze pomocí Microsoft Accessu. Pak je můžete otevřít a použít v kódu MFC.

Účely

Objekt querydef můžete použít pro některý z následujících účelů:

  • Vytvoření objektu CDaoRecordset

  • Volání členské funkce objektu Execute pro přímé spuštění akčního dotazu nebo předávacího dotazu SQL

Objekt querydef můžete použít pro libovolný typ dotazu, včetně výběru, akce, křížové tabulky, odstranění, aktualizace, připojení, make-table, definice dat, průchozí, sjednocení a hromadných dotazů SQL. Typ dotazu je určen obsahem zadaného příkazu SQL. Informace otypech Execute Sady záznamů se běžně používají pro dotazy vracející řádky, obvykle ty, které používají select ... Klíčová slova FROM . Execute nejčastěji se používá pro hromadné operace. Další informace naleznete v tématu Execute and CDaoRecordset.

Querydefs a Recordsets

Pokud chcete k vytvoření objektu CDaoRecordset použít querydef, obvykle vytváříte nebo otevíráte dotazování, jak je popsáno výše. Pak vytvořte objekt sady záznamů a předejte ukazatel na objekt querydef při volání CDaoRecordset::Open. Předaný dotaz musí být v otevřeném stavu. Další informace naleznete ve třídě CDaoRecordset.

Dotazování nelze použít k vytvoření sady záznamů (nejběžnější použití pro dotazování), pokud není v otevřeném stavu. Vložte dotaz do otevřeného stavu voláním nebo OpenCreate.

Externí databáze

Objekty Querydef jsou upřednostňovaným způsobem použití nativního dialektu SQL externího databázového stroje. Můžete například vytvořit dotaz Transact SQL (jak se používá na Microsoft SQL Serveru) a uložit ho do objektu querydef. Pokud potřebujete použít dotaz SQL, který není založený na databázovém stroji Microsoft Jet, musíte zadat připojovací řetězec, který odkazuje na externí zdroj dat. Dotazy s platnými připojovací řetězec vynechají databázový stroj a předávají dotaz přímo externímu databázovému serveru ke zpracování.

Tip

Upřednostňovaným způsobem práce s tabulkami ODBC je jejich připojení k Microsoft Jetu (. Databáze MDB.

Související informace najdete v tématech QueryDef Object, QueryDefs Collection a CdbDatabase Object v sadě DAO SDK.

Hierarchie dědičnosti

Objekt CObject

CDaoQueryDef

Požadavky

Hlavička: afxdao.h

CDaoQueryDef::Append

Volání této členské funkce po volání create vytvořit nový dotazdef objektu.

virtual void Append();

Poznámky

Append uloží dotazování do databáze připojením objektu do kolekce QueryDefs databáze. Querydef můžete použít jako dočasný objekt, aniž byste ho připojili, ale pokud ho chcete zachovat, musíte volat Append.

Pokud se pokusíte připojit dočasný objekt querydef, MFC vyvolá výjimku typu CDaoException.

CDaoQueryDef::CanUpdate

Voláním této členské funkce určíte, jestli můžete upravit dotazování , například změnit jeho název nebo řetězec SQL.

BOOL CanUpdate();

Vrácená hodnota

Nenulové, pokud máte povoleno upravovat dotazování; jinak 0.

Poznámky

Dotazování můžete upravit v následujících případech:

  • Není založená na databázi, která je otevřená jen pro čtení.

  • Máte oprávnění k aktualizaci databáze.

    To závisí na tom, jestli jste implementovali funkce zabezpečení. MFC neposkytuje podporu zabezpečení; musíte ho implementovat sami voláním dao přímo nebo pomocí Microsoft Accessu. Viz téma "Vlastnost oprávnění" v nápovědě k DAO.

CDaoQueryDef::CDaoQueryDef

CDaoQueryDef Vytvoří objekt.

CDaoQueryDef(CDaoDatabase* pDatabase);

Parametry

pDatabase
Ukazatel na otevřený objekt CDaoDatabase .

Poznámky

Objekt může představovat existující dotazef uložený v kolekci QueryDefs databáze, nový dotaz, který se má uložit v kolekci, nebo dočasný dotaz, který se nemá uložit. Další krok závisí na typu dotazu:

  • Pokud objekt představuje existující dotazdef, zavolejte funkci open člena objektu a inicializujete ji.

  • Pokud objekt představuje nový dotazdef, který se má uložit, zavolejte funkci Create člena objektu. Tím se objekt přidá do kolekce QueryDefs databáze. Potom volejte CDaoQueryDef členské funkce pro nastavení atributů objektu. Nakonec zavolejte připojit.

  • Pokud objekt představuje dočasný dotazdef (nikoli uložit do databáze), volání Create, předání prázdného řetězce pro název dotazu. Po volání Createinicializovat dotazdef přímo nastavením jeho atributů. Nevolejte Append.

K nastavení atributů querydef můžete použít členské funkce SetName, SetSQL, Set PŘIPOJENÍ, SetODBCTimeout a SetReturnsRecords.

Po dokončení s objektem querydef zavolejte jeho funkci Zavřít člena. Pokud máte ukazatel na querydef, použijte delete operátor k zničení objektu C++.

CDaoQueryDef::Close

Volání této členské funkce po dokončení pomocí objektu querydef.

virtual void Close();

Poznámky

Zavření objektu querydef uvolní základní objekt DAO, ale nezničí uložený objekt DAO querydef nebo objekt C++ CDaoQueryDef . To není totéž jako CDaoDatabase::D eleteQueryDef, který odstraní dotazdef z kolekce QueryDefs databáze v DAO (pokud není dočasný dotazdef).

CDaoQueryDef::Create

Voláním této členské funkce vytvoříte nový uložený dotaz nebo nový dočasný dotaz.

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

Parametry

lpszName
Jedinečný název dotazu uloženého v databázi. Podrobnosti o řetězci najdete v tématu CreateQueryDef – metoda v nápovědě k dao. Pokud přijmete výchozí hodnotu, vytvoří se prázdný řetězec, vytvoří se dočasný dotaz. Takový dotaz není uložen v kolekci QueryDefs.

Lpszsql
Řetězec SQL, který definuje dotaz. Pokud přijmete výchozí hodnotu NULL, musíte později volat SetSQL nastavit řetězec. Do té doby není dotaz definován. K otevření sady záznamů však můžete použít nedefinovaný dotaz; Podrobnosti najdete v poznámkách. Příkaz SQL musí být definován před připojením dotazu do kolekce QueryDefs.

Poznámky

Pokud předáte název v lpszName, můžete volat Append a uložit dotazdef v kolekci QueryDefs databáze. V opačném případě je objekt dočasným dotazem a neuloží se. V obou případech je dotazdef v otevřeném stavu a můžete ho použít k vytvoření objektu CDaoRecordset nebo volat členskou funkci Execute querydef.

Pokud v lpszSQL nezadáte příkaz SQL, nemůžete dotaz spustit, Execute ale můžete ho použít k vytvoření sady záznamů. V takovém případě mfc používá výchozí příkaz SQL sady záznamů.

CDaoQueryDef::Execute

Voláním této členské funkce spustíte dotaz definovaný objektem querydef.

virtual void Execute(int nOptions = dbFailOnError);

Parametry

nOptions
Celé číslo, které určuje charakteristiky dotazu. Související informace najdete v tématu Metoda Execute v nápovědě k DAO. Pomocí bitové operátoru OR (|) můžete pro tento argument zkombinovat následující konstanty:

  • dbDenyWrite Odepřít oprávnění k zápisu jiným uživatelům.

  • dbInconsistent Nekonzistentní aktualizace

  • dbConsistent Konzistentní aktualizace.

  • dbSQLPassThrough Průchozí sql Způsobí předání příkazu SQL do databáze ODBC ke zpracování.

  • dbFailOnError Výchozí hodnota. Vrácení aktualizací zpět, pokud dojde k chybě, a nahlásit chybu uživateli.

  • dbSeeChanges Pokud jiný uživatel mění data, která upravujete, vygeneruje chybu za běhu.

Poznámka

Vysvětlení termínů "nekonzistentní" a "konzistentní" najdete v tématu "Execute Method" v nápovědě k DAO.

Poznámky

Objekty Querydef použité k provedení tímto způsobem mohou představovat pouze jeden z následujících typů dotazů:

  • Akční dotazy

  • Předávací dotazy SQL

Execute nefunguje u dotazů, které vracejí záznamy, jako jsou například výběrové dotazy. Execute se běžně používá pro dotazy hromadné operace, jako jsou NAPŘÍKLAD UPDATE, INSERT nebo SELECT INTO nebo pro operace DDL (Data Definition Language).

Tip

Upřednostňovaným způsobem práce se zdroji dat ODBC je připojení tabulek k Microsoft Jet (. Databáze MDB. Další informace najdete v tématu "Přístup k externím databázím pomocí dao" v nápovědě k dao.

Volání GetRecordsAffect člen funkce querydef objektu určit počet záznamů ovlivněných posledním Execute voláním. Například GetRecordsAffected vrátí informace o počtu odstraněných, aktualizovaných nebo vložených záznamů při provádění akčního dotazu. Vrácený počet nebude odrážet změny v souvisejících tabulkách, pokud se projeví kaskádové aktualizace nebo odstranění.

Pokud zahrnete obojí dbInconsistent a dbConsistent nebo pokud ani jeden, výsledek je výchozí, dbInconsistent.

Execute nevrací sadu záznamů. Použití Execute v dotazu, který vybere záznamy způsobí, že MFC vyvolá výjimku typu CDaoException.

CDaoQueryDef::Get Připojení

Voláním této členské funkce získáte připojovací řetězec přidružené ke zdroji dat querydef.

CString GetConnect();

Vrácená hodnota

A CString obsahující připojovací řetězec pro querydef.

Poznámky

Tato funkce se používá pouze se zdroji dat ODBC a určitými ovladači ISAM. Nepoužívá se s Microsoft Jetem (. databáze MDB; v tomto případě GetConnect vrátí prázdný řetězec. Další informace najdete v tématu Nastavení Připojení.

Tip

Upřednostňovaným způsobem práce s tabulkami ODBC je jejich připojení k objektu . Databáze MDB. Další informace najdete v tématu "Přístup k externím databázím pomocí dao" v nápovědě k dao.

Informace o připojovací řetězec naleznete v tématu "vlastnost Připojení" v nápovědě k dao.

CDaoQueryDef::GetDateCreated

Voláním této členské funkce získáte datum vytvoření objektu querydef.

COleDateTime GetDateCreated();

Vrácená hodnota

Objekt COleDateTime obsahující datum a čas vytvoření dotazu.

Poznámky

Související informace najdete v tématu "DateCreated, LastUpdated Properties" v nápovědě k daO.

CDaoQueryDef::GetDateLastUpdated

Voláním této členské funkce získáte datum poslední aktualizace objektu querydef – při změně některé z jejích vlastností, jako je název, řetězec SQL nebo jeho připojovací řetězec.

COleDateTime GetDateLastUpdated();

Vrácená hodnota

Objekt COleDateTime obsahující datum a čas poslední aktualizace dotazu.

Poznámky

Související informace najdete v tématu "DateCreated, LastUpdated Properties" v nápovědě k daO.

CDaoQueryDef::GetFieldCount

Voláním této členské funkce načtěte počet polí v dotazu.

short GetFieldCount();

Vrácená hodnota

Počet polí definovaných v dotazu.

Poznámky

GetFieldCount je užitečné pro procházení všech polí v dotazu. Pro tento účel použijte GetFieldCount ve spojení s GetFieldInfo.

CDaoQueryDef::GetFieldInfo

Voláním této členské funkce získáte různé druhy informací o poli definovaném v dotazu.

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parametry

nIndex
Index na základě nuly požadovaného pole v kolekci Pole dotazu pro vyhledávání podle indexu.

Fieldinfo
Odkaz na CDaoFieldInfo objekt, který vrací požadované informace.

dwInfoOptions
Možnosti, které určují, které informace o poli se mají načíst. Dostupné možnosti jsou zde uvedeny spolu s tím, co způsobí vrácení funkce:

  • AFX_DAO_PRIMARY_INFO (výchozí) název, typ, velikost, atributy

  • AFX_DAO_SECONDARY_INFO primární informace plus: Pořadové umístění, Povinné, Povolit nulovou délku, zdrojové pole, cizí název, zdrojovou tabulku, pořadí řazení

  • AFX_DAO_ALL_INFO primární a sekundární informace plus: výchozí hodnota, ověřovací text, ověřovací pravidlo

lpszName
Řetězec obsahující název požadovaného pole pro vyhledání podle názvu. Můžete použít CString.

Poznámky

Popis informací vrácených v poliinfo naleznete ve struktuře CDaoFieldInfo . Tato struktura obsahuje členy, které odpovídají popisným informacím v části dwInfoOptions výše. Pokud požadujete jednu úroveň informací, získáte také všechny předchozí úrovně informací.

CDaoQueryDef::GetName

Voláním této členské funkce načtěte název dotazu reprezentovaného dotazem.

CString GetName();

Vrácená hodnota

Název dotazu.

Poznámky

Názvy dotazů jsou jedinečné uživatelsky definované názvy. Další informace o názvech querydef naleznete v tématu "Název vlastnost" v nápovědě k DAO.

CDaoQueryDef::GetODBCTimeout

Voláním této členské funkce načtěte aktuální časový limit před vypršením časového limitu dotazu na zdroj dat ODBC.

short GetODBCTimeout();

Vrácená hodnota

Počet sekund před časovým limitem dotazu.

Poznámky

Informace o tomto časovém limitu najdete v tématu "Vlastnost ODBCTimeout" v nápovědě k rozhraní DAO.

Tip

Upřednostňovaným způsobem práce s tabulkami ODBC je jejich připojení k Microsoft Jetu (. Databáze MDB. Další informace najdete v tématu "Přístup k externím databázím pomocí dao" v nápovědě k dao.

CDaoQueryDef::GetParameterCount

Voláním této členské funkce načtěte počet parametrů v uloženém dotazu.

short GetParameterCount();

Vrácená hodnota

Počet parametrů definovaných v dotazu.

Poznámky

GetParameterCount je užitečné pro procházení všech parametrů v dotazu. Pro tento účel použijte GetParameterCount ve spojení s GetParameterInfo.

Související informace najdete v tématech "Objekt parametru", "Kolekce parametrů" a "Deklarace PARAMETRŮ (SQL)" v nápovědě k DAO.

CDaoQueryDef::GetParameterInfo

Voláním této členské funkce získáte informace o parametru definovaném v dotazu.

void GetParameterInfo(
    int nIndex,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetParameterInfo(
    LPCTSTR lpszName,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parametry

nIndex
Index založený na nule požadovaného parametru v kolekci Parameters querydef pro vyhledávání podle indexu.

paraminfo
Odkaz na CDaoParameterInfo objekt, který vrací požadované informace.

dwInfoOptions
Možnosti, které určují, které informace o parametru se mají načíst. K dispozici je zde uvedená možnost spolu s tím, co způsobí vrácení funkce:

  • AFX_DAO_PRIMARY_INFO (výchozí) název, typ

lpszName
Řetězec obsahující název požadovaného parametru pro vyhledání podle názvu. Můžete použít CString.

Poznámky

Popis informací vrácených v paraminfo naleznete v CDaoParameterInfo struktury. Tato struktura obsahuje členy, které odpovídají popisným informacím v části dwInfoOptions výše.

Související informace najdete v tématu Deklarace PARAMETRŮ (SQL) v nápovědě k DAO.

CDaoQueryDef::GetParamValue

Voláním této členské funkce načtěte aktuální hodnotu zadaného parametru uloženého v kolekci Parameters metody querydef.

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

Parametry

lpszName
Název parametru, jehož hodnotu chcete vyhledat podle názvu.

nIndex
Index parametru založený na nule v kolekci Parameters querydef pro vyhledávání podle indexu. Tuto hodnotu můžete získat pomocí volání GetParameterCount a GetParameterInfo.

Vrácená hodnota

Objekt třídy COleVariant , který obsahuje hodnotu parametru.

Poznámky

K parametru můžete přistupovat buď podle názvu, nebo podle jeho pořadí v kolekci.

Související informace najdete v tématu Deklarace PARAMETRŮ (SQL) v nápovědě k DAO.

CDaoQueryDef::GetRecordsAffect

Voláním této členské funkce určíte, kolik záznamů bylo ovlivněno posledním voláním execute.

long GetRecordsAffected();

Vrácená hodnota

Počet ovlivněných záznamů.

Poznámky

Vrácený počet nebude odrážet změny v souvisejících tabulkách, pokud se projeví kaskádové aktualizace nebo odstranění.

Související informace naleznete v tématu "RecordsAffected Property" v nápovědě k DAO.

CDaoQueryDef::GetReturnsRecords

Voláním této členské funkce určíte, jestli dotazování vychází z dotazu, který vrací záznamy.

BOOL GetReturnsRecords();

Vrácená hodnota

Nenulové, pokud je dotaz založen na dotazu, který vrací záznamy; jinak 0.

Poznámky

Tato členová funkce se používá jenom pro předávací dotazy SQL. Další informace o dotazech SQL naleznete v části Execute member function. Další informace o práci s předávacími dotazy SQL naleznete v tématu SetReturnsRecords členské funkce.

Související informace naleznete v tématu "ReturnsRecords – vlastnost" v nápovědě k dao.

CDaoQueryDef::GetSQL

Voláním této členské funkce načtěte příkaz SQL, který definuje dotaz, na kterém je založen dotaz.

CString GetSQL();

Vrácená hodnota

Příkaz SQL, který definuje dotaz, na kterém je založen dotaz.

Poznámky

Řetězec pak pravděpodobně parsujete pro klíčová slova, názvy tabulek atd.

Související informace najdete v tématech "Vlastnost SQL", "Porovnání SQL databázového stroje Microsoft Jet a ANSI SQL" a "Dotazování databáze pomocí SQL v kódu" v nápovědě k DAO.

CDaoQueryDef::GetType

Voláním této členské funkce určíte typ dotazu dotazu.

short GetType();

Vrácená hodnota

Typ dotazu definovaného nástrojem querydef. Hodnoty najdete v části Poznámky.

Poznámky

Typ dotazu se nastavuje podle toho, co zadáte v řetězci SQL querydef při vytváření dotazu nebo volání existující členské funkce SetSQL dotazu. Typ dotazu vrácený touto funkcí může být jedna z následujících hodnot:

  • dbQSelect Vyberte

  • dbQAction Akce

  • dbQCrosstab Křížového

  • dbQDelete Odstranit

  • dbQUpdate Aktualizace

  • dbQAppend Připojit

  • dbQMakeTable Make-table

  • dbQDDL Definice dat

  • dbQSQLPassThrough Předávací

  • dbQSetOperation Unie

  • dbQSPTBulkdbQSQLPassThrough Používá se k zadání dotazu, který nevrací záznamy.

Poznámka

Pokud chcete vytvořit předávací dotaz SQL, nenastavujte konstantu dbSQLPassThrough . Toto nastavení automaticky nastaví databázový stroj Microsoft Jet při vytváření objektu querydef a nastavení připojovací řetězec.

Informace o řetězcích SQL najdete v tématu GetSQL. Informace otypech

CDaoQueryDef::IsOpen

Voláním této členské funkce určíte, zda CDaoQueryDef je objekt aktuálně otevřen.

BOOL IsOpen() const;

Vrácená hodnota

Nenulové, pokud CDaoQueryDef je objekt aktuálně otevřený; jinak 0.

Poznámky

Před voláním příkazu Execute nebo vytvoření objektu CDaoRecordset musí být dotazovaný objekt v otevřeném stavu. Chcete-li vložit dotazování do volání otevřeného stavu buď Vytvořit (pro nový dotazdef) nebo Otevřít (pro existující dotazdef).

CDaoQueryDef::m_pDatabase

Obsahuje ukazatel na objekt CDaoDatabase přidružený k objektu querydef.

Poznámky

Tento ukazatel použijte, pokud potřebujete získat přímý přístup k databázi – například k získání ukazatelů na jiné objekty querydef nebo sady záznamů v kolekcích databáze.

CDaoQueryDef::m_pDAOQueryDef

Obsahuje ukazatel na rozhraní OLE pro základní objekt DAO querydef.

Poznámky

Tento ukazatel je poskytován pro úplnost a konzistenci s ostatními třídami. Vzhledem k tomu, že knihovna MFC spíše plně zapouzdřuje definice dotazů DAO, pravděpodobně ji nepotřebujete. Pokud ji použijete, buďte opatrní – zejména neměňte hodnotu ukazatele, pokud nevíte, co děláte.

CDaoQueryDef::Open

Voláním této členské funkce otevřete dotazování dříve uložené v kolekci QueryDefs databáze.

virtual void Open(LPCTSTR lpszName = NULL);

Parametry

lpszName
Řetězec obsahující název uloženého dotazu, který se má otevřít. Můžete použít CString.

Poznámky

Jakmile je dotazdef otevřený, můžete volat jeho členské funkce Execute nebo pomocí querydef vytvořit CDaoRecordset objektu.

CDaoQueryDef::Set Připojení

Voláním této členské funkce nastavíte připojovací řetězec objektu querydef.

void SetConnect(LPCTSTR lpszConnect);

Parametry

lpsz Připojení
Řetězec, který obsahuje připojovací řetězec pro přidružený objekt CDaoDatabase.

Poznámky

Připojovací řetězec slouží k předání dalších informací rozhraní ODBC a určitým ovladačům ISAM podle potřeby. Nepoužívá se pro Microsoft Jet (. Databáze MDB.

Tip

Upřednostňovaným způsobem práce s tabulkami ODBC je jejich připojení k objektu . Databáze MDB.

Před spuštěním dotazu, který představuje předávací dotaz SQL do zdroje dat ODBC, nastavte připojovací řetězec pomocí SetConnect a volání SetReturnsRecords určit, zda dotaz vrací záznamy.

Další informace o struktuře připojovací řetězec a příkladech komponent připojovací řetězec najdete v tématu "vlastnost Připojení" v nápovědě k dao.

CDaoQueryDef::SetName

Pokud chcete změnit název dotazu, který není dočasný, zavolejte tuto členovou funkci.

void SetName(LPCTSTR lpszName);

Parametry

lpszName
Řetězec obsahující nový název netemporárního dotazu v přidruženém objektu CDaoDatabase .

Poznámky

Názvy dotazů jsou jedinečné uživatelsky definované názvy. Před přidáním objektu querydef do kolekce QueryDefs můžete volat SetName .

CDaoQueryDef::SetODBCTimeout

Voláním této členské funkce nastavíte časový limit před vypršením časového limitu dotazu na zdroj dat ODBC.

void SetODBCTimeout(short nODBCTimeout);

Parametry

nODBCTimeout
Počet sekund před časovým limitem dotazu.

Poznámky

Tato členová funkce umožňuje přepsat výchozí počet sekund před dalšími operacemi v připojeném zdroji dat "vypršel časový limit". Kvůli problémům se síťovým přístupem, nadměrnému zpracování dotazů atd. může dojít k vypršení časového limitu operace. Pokud SetODBCTimeout chcete změnit hodnotu časového limitu dotazu, zavolejte před spuštěním dotazu s tímto dotazem. (Protože odbc znovu používá připojení, hodnota časového limitu je stejná pro všechny klienty ve stejném připojení.)

Výchozí hodnota časových limitů dotazu je 60 sekund.

CDaoQueryDef::SetParamValue

Voláním této členské funkce nastavíte hodnotu parametru v dotazu za běhu.

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

Parametry

lpszName
Název parametru, jehož hodnotu chcete nastavit.

varValue
Hodnota, která se má nastavit; viz Poznámky.

nIndex
Pořadové umístění parametru v kolekci Parameters dotazu. Tuto hodnotu můžete získat pomocí volání GetParameterCount a GetParameterInfo.

Poznámky

Parametr již musí být vytvořen jako součást řetězce SQL querydef. K parametru můžete přistupovat buď podle názvu, nebo podle jeho pořadí v kolekci.

Zadejte hodnotu, která se má nastavit jako COleVariant objekt. Informace o nastavení požadované hodnoty a typu v COleVariant objektu naleznete v třídě COleVariant.

CDaoQueryDef::SetReturnsRecords

Volání této členské funkce jako součást procesu nastavení předávacího dotazu SQL do externí databáze.

void SetReturnsRecords(BOOL bReturnsRecords);

Parametry

bReturnsRecords
Pokud dotaz na externí databázi vrátí záznamy, předejte hodnotu TRUE; jinak NEPRAVDA.

Poznámky

V takovém případě musíte vytvořit querydef a nastavit jeho vlastnosti pomocí jiných CDaoQueryDef členských funkcí. Popis externích databází najdete v tématu Nastavení Připojení.

CDaoQueryDef::SetSQL

Voláním této členské funkce nastavíte příkaz SQL, který se spustí v dotazu.

void SetSQL(LPCTSTR lpszSQL);

Parametry

Lpszsql
Řetězec obsahující kompletní příkaz SQL, který je vhodný ke spuštění. Syntaxe tohoto řetězce závisí na DBMS, na které cílí váš dotaz. Diskuzi o syntaxi použité v databázovém stroji Microsoft Jet najdete v tématu Vytváření příkazů SQL v kódu v nápovědě k jazyku DAO.

Poznámky

Typické použití SetSQL je nastavení objektu querydef pro použití v předávacím dotazu SQL. (Syntaxe předávacích dotazů SQL na cílovém DBMS najdete v dokumentaci k dbMS.)

Viz také

CObject – třída
Graf hierarchie
CDaoRecordset – třída
CDaoDatabase – třída
CDaoTableDef – třída
CDaoException – třída