CDaoQueryDef
Třída
Představuje definici dotazu nebo "querydef", obvykle jednu uloženou v databázi.
Poznámka:
Objekt pro přístup k datům (DAO) se podporuje prostřednictvím Office 2013. DAO 3.6 je konečná verze a je zastaralá.
Syntaxe
class CDaoQueryDef : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDaoQueryDef::CDaoQueryDef | CDaoQueryDef Vytvoří objekt. Další hovor Open nebo Create v závislosti na vašich potřebách. |
Veřejné metody
Název | 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::GetConnect | 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žívanou rozhraním ODBC (pro dotaz ODBC) při spuštění dotazu, která 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::SetConnect | 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
Název | 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 do databáze. 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 Microsoft Foundation Class (MFC) založených na rozhraní ODBC (Open Database Connectivity). 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í se nevoláCreate
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. Obsah zadaného příkazu SQL určuje typ dotazu. Informace o typech dotazů najdete v Execute
tématu a GetType
členské funkce. Sady záznamů se běžně používají pro dotazy vracející řádky, obvykle dotazy pomocí select ... Klíčová slova FROM . Execute
nejčastěji se používá pro hromadné operace. Další informace najdete v tématech Execute
a CDaoRecordset
.
Querydefs a Recordsets
Pokud chcete použít objekt querydef k vytvoření objektu CDaoRecordset
, obvykle vytváříte nebo otevíráte dotazování, jak je popsáno výše. Pak vytvořte objekt sady záznamů, který při volání CDaoRecordset::Open
předá ukazatel objektu querydef . Předaný dotaz musí být v otevřeném stavu. Další informace naleznete v tématu třída CDaoRecordset
.
Dotazování není možné 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
Záhlaví: 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();
Návratová hodnota
Nenulové, pokud můžete upravit 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, SetCONNECT, 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 se neuloží do kolekce 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 neodráží změny v souvisejících tabulkách, pokud se kaskádové aktualizace nebo odstranění projeví.
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::GetConnect
Voláním této členské funkce získáte připojovací řetězec přidružené ke zdroji dat querydef.
CString GetConnect();
Návratová hodnota
A CString
obsahující připojovací řetězec pro dotazování.
Poznámky
Tato funkce se používá pouze se zdroji dat ODBC a určitými ovladači ISAM. Nepoužívá se s databázemi Microsoft Jet (.MDB
), v tomto případě GetConnect
vrátí prázdný řetězec. Další informace najdete na webu SetConnect
.
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 "Připojit vlastnost" v nápovědě k rozhraní DAO.
CDaoQueryDef::GetDateCreated
Voláním této členské funkce získáte datum vytvoření objektu querydef.
COleDateTime GetDateCreated();
Návratová 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();
Návratová 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();
Návratová 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 s GetFieldCount
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();
Návratová 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();
Návratová 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();
Návratová 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 s GetParameterCount
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 ve paraminfo
struktuře.CDaoParameterInfo
Tato struktura obsahuje členy, které odpovídají popisným informacím uvedeným výše dwInfoOptions
.
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.
Návratová 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ů bude ovlivněno posledním voláním execute.
long GetRecordsAffected();
Návratová hodnota
Počet ovlivněných záznamů.
Poznámky
Vrácený počet neodráží změny v souvisejících tabulkách, pokud se kaskádové aktualizace nebo odstranění projeví.
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();
Návratová 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();
Návratová hodnota
Příkaz SQL, který definuje dotaz, na kterém je založen dotaz.
Poznámky
Řetězec můžete analyzovat 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();
Návratová 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
VybratdbQAction
AkcedbQCrosstab
Křížová tabulkadbQDelete
VymazatdbQUpdate
AktualizacedbQAppend
PřipojitdbQMakeTable
Make-tabledbQDDL
Definice datdbQSQLPassThrough
PrůchozídbQSetOperation
SvazdbQSPTBulk
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;
Návratová hodnota
Nenulové, pokud CDaoQueryDef
je objekt aktuálně otevřený; jinak 0.
Poznámky
Před voláním Execute
nebo vytvořením CDaoRecordset
objektu musí být dotazování v otevřeném stavu. Pokud chcete vložit dotaz do otevřeného stavu, zavolejte buď Create
(pro nový dotaz), nebo Open
(pro existující dotazování).
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. Chcete-li například získat ukazatele 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, udělejte to opatrně. Konkrétně 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 querydef otevřený, můžete volat jeho Execute
členovou funkci nebo pomocí querydef vytvořit CDaoRecordset
objekt.
CDaoQueryDef::SetConnect
Voláním této členské funkce nastavíte připojovací řetězec objektu querydef.
void SetConnect(LPCTSTR lpszConnect);
Parametry
lpszConnect
Ř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 databáze Microsoft Jet (.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 "Připojit vlastnost" v nápovědě k rozhraní 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 musí být již 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í naleznete v tématu SetConnect.
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