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 Create v 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:
Ve všech případech nejprve vytvořte
CDaoQueryDef
objekt a zadejte ukazatel na objekt CDaoDatabase , do kterého dotaz patří.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áteCreate
Open
.Chcete-li vytvořit dočasné dotazování, zavolejte
Create
. Předejte prázdný řetězec pro název dotazu. NevolejteAppend
.
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 Open
Create
.
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
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íCreate
inicializovat dotazdef přímo nastavením jeho atributů. NevolejteAppend
.
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í aktualizacedbConsistent
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
VybertedbQAction
AkcedbQCrosstab
KřížovéhodbQDelete
OdstranitdbQUpdate
AktualizacedbQAppend
PřipojitdbQMakeTable
Make-tabledbQDDL
Definice datdbQSQLPassThrough
PředávacídbQSetOperation
UniedbQSPTBulk
dbQSQLPassThrough
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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro