CDaoWorkspace – třída
Spravuje pojmenovanou relaci databáze chráněnou heslem od přihlášení k logffu jediným uživatelem.
Poznámka:
Datové objekty (DAO) se podporují prostřednictvím Office 2013. DAO 3.6 je konečná verze a je považována za za zastaralou.
Syntaxe
class CDaoWorkspace : public CObject
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CDaoWorkspace::CDaoWorkspace | Vytvoří objekt pracovního prostoru. Potom zavolejte Create nebo Open . |
Veřejné metody
Název | Popis |
---|---|
CDaoWorkspace::Append | Připojí nově vytvořený pracovní prostor do kolekce Pracovních prostorů databázového stroje. |
CDaoWorkspace::BeginTrans | Zahájí novou transakci, která se vztahuje na všechny databáze otevřené v pracovním prostoru. |
CDaoWorkspace::Close | Zavře pracovní prostor a všechny objekty, které obsahuje. Čekající transakce se vrátí zpět. |
CDaoWorkspace::CommitTrans | Dokončí aktuální transakci a uloží změny. |
CDaoWorkspace::CompactDatabase | Zkomprimuje (nebo duplikuje) databázi. |
CDaoWorkspace::Create | Vytvoří nový objekt pracovního prostoru DAO. |
CDaoWorkspace::GetDatabaseCount | Vrátí počet databázových objektů DAO v kolekci Databází pracovního prostoru. |
CDaoWorkspace::GetDatabaseInfo | Vrátí informace o zadané databázi DAO definované v kolekci Databáze pracovního prostoru. |
CDaoWorkspace::GetIniPath | Vrátí umístění nastavení inicializace databázového stroje Microsoft Jet v registru Systému Windows. |
CDaoWorkspace::GetIsolateODBCTrans | Vrátí hodnotu, která označuje, zda více transakcí, které zahrnují stejný zdroj dat ODBC jsou izolované prostřednictvím vynucených více připojení ke zdroji dat. |
CDaoWorkspace::GetLoginTimeout | Vrátí počet sekund před chybou, když se uživatel pokusí přihlásit k databázi ODBC. |
CDaoWorkspace::GetName | Vrátí uživatelem definovaný název objektu pracovního prostoru. |
CDaoWorkspace::GetUserName | Vrátí uživatelské jméno zadané při vytvoření pracovního prostoru. Toto je název vlastníka pracovního prostoru. |
CDaoWorkspace::GetVersion | Vrátí řetězec, který obsahuje verzi databázového stroje přidruženého k pracovnímu prostoru. |
CDaoWorkspace::GetWorkspaceCount | Vrátí počet objektů pracovního prostoru DAO v kolekci Pracovních prostorů databázového stroje. |
CDaoWorkspace::GetWorkspaceInfo | Vrátí informace o zadaném pracovním prostoru DAO definovaném v kolekci Pracovních prostorů databázového stroje. |
CDaoWorkspace::Idle | Umožňuje databázovému stroji provádět úlohy na pozadí. |
CDaoWorkspace::IsOpen | Vrátí nenulové hodnoty, pokud je pracovní prostor otevřený. |
CDaoWorkspace::Open | Explicitně otevře objekt pracovního prostoru přidružený k výchozímu pracovnímu prostoru DAO. |
CDaoWorkspace::RepairDatabase | Pokusí se opravit poškozenou databázi. |
CDaoWorkspace::Rollback | Ukončí aktuální transakci a neuloží změny. |
CDaoWorkspace::SetDefaultPassword | Nastaví heslo, které databázový stroj používá při vytváření objektu pracovního prostoru bez konkrétního hesla. |
CDaoWorkspace::SetDefaultUser | Nastaví uživatelské jméno, které databázový stroj používá při vytvoření objektu pracovního prostoru bez konkrétního uživatelského jména. |
CDaoWorkspace::SetIniPath | Nastaví umístění nastavení inicializace databázového stroje Microsoft Jet v registru Windows. |
CDaoWorkspace::SetIsolateODBCTrans | Určuje, zda více transakcí, které zahrnují stejný zdroj dat ODBC jsou izolované vynucením více připojení ke zdroji dat. |
CDaoWorkspace::SetLoginTimeout | Nastaví počet sekund před chybou, když se uživatel pokusí přihlásit ke zdroji dat ODBC. |
Veřejné datové členy
Název | Popis |
---|---|
CDaoWorkspace::m_pDAOWorkspace | Odkazuje na příslušný objekt pracovního prostoru DAO. |
Poznámky
Ve většině případů nebudete potřebovat více pracovních prostorů a nebudete muset vytvářet explicitní objekty pracovního prostoru; Když otevřete objekty databáze a sady záznamů, používají výchozí pracovní prostor DAO. V případě potřeby však můžete spustit více relací najednou vytvořením dalších objektů pracovního prostoru. Každý objekt pracovního prostoru může obsahovat více otevřených databázových objektů ve vlastní kolekci Databáze. V prostředí MFC je pracovní prostor primárně správcem transakcí, který určuje sadu otevřených databází ve stejném "transakčním prostoru".
Poznámka:
Databázové třídy DAO se liší od databázových tříd MFC založených na rozhraní ODBC (Open Database Connectivity). Všechny názvy databázových tříd DAO mají předponu CDao. 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 přistupují k datům prostřednictvím databázového stroje Microsoft Jet, včetně ovladačů ODBC. Podporují také operace jazyka DDL (Data Definition Language), například vytváření databází a přidávání tabulek a polí prostřednictvím tříd, aniž by bylo nutné přímo volat DAO.
Možnosti
Třída CDaoWorkspace
poskytuje:
V případě potřeby explicitní přístup k výchozímu pracovnímu prostoru vytvořenému inicializací databázového stroje. Výchozí pracovní prostor DAO obvykle používáte implicitně vytvořením objektů databáze a sady záznamů.
Transakční prostor, ve kterém se transakce vztahují na všechny databáze otevřené v pracovním prostoru. Můžete vytvořit více pracovních prostorů pro správu samostatných transakčních prostorů.
Rozhraní pro mnoho vlastností základního databázového stroje Microsoft Jet (viz statické členské funkce). Otevření nebo vytvoření pracovního prostoru nebo volání statické členské funkce před otevřením nebo vytvořením inicializuje databázový stroj.
Přístup k kolekci Pracovních prostorů databázového stroje, která ukládá všechny aktivní pracovní prostory, které byly k ní připojeny. Můžete také vytvářet pracovní prostory a pracovat s nimi, aniž byste je připojili k kolekci.
Zabezpečení
MFC neimplementuje kolekce Users a Groups v rozhraní DAO, které se používají pro řízení zabezpečení. Pokud tyto aspekty DAO potřebujete, musíte je naprogramovat sami prostřednictvím přímých volání rozhraní DAO. Informace naleznete v technické poznámce 54.
Využití
Třídu můžete použít CDaoWorkspace
k:
Explicitně otevřete výchozí pracovní prostor.
Použití výchozího pracovního prostoru je obvykle implicitní při otevření nové CDaoDatabase nebo CDaoRecordset objekty. Možná k němu ale budete muset explicitně přistupovat. Například pro přístup k vlastnostem databázového stroje nebo kolekci Pracovních prostorů. Viz část Implicitní použití výchozího pracovního prostoru níže.
Vytvořte nové pracovní prostory. Pokud je chcete přidat do kolekce Pracovních prostorů, zavolejte připojit .
Otevřete existující pracovní prostor v kolekci Pracovních prostorů.
Vytvoření nového pracovního prostoru, který ještě v kolekci Pracovních prostorů neexistuje, je popsáno v části Vytvořit členovou funkci. Objekty pracovního prostoru se mezi relacemi databázového stroje neuchovávají žádným způsobem. Pokud aplikace staticky propojí mfc, ukončete aplikaci tak, že neinicializuje databázový stroj. Pokud se vaše aplikace dynamicky propojí s mfc, databázový stroj není inicializován při uvolnění knihovny MFC DLL.
Explicitní otevření výchozího pracovního prostoru nebo otevření existujícího pracovního prostoru v kolekci Pracovních prostorů je popsáno v rámci funkce Otevřít člena.
Ukončete relaci pracovního prostoru zavřením pracovního prostoru pomocí členské funkce Zavřít . Close
zavře všechny databáze, které jste nezavřeli, a vrátí zpět všechny nepotvrzené transakce.
Transakce
DAO spravuje transakce na úrovni pracovního prostoru; a proto transakce v pracovním prostoru s více otevřenými databázemi platí pro všechny databáze. Pokud mají například dvě databáze nepotvrzené aktualizace a voláte CommitTrans, všechny aktualizace se potvrdí. Pokud chcete omezit transakce na jednu databázi, potřebujete pro ni samostatný objekt pracovního prostoru.
Implicitní použití výchozího pracovního prostoru
MFC implicitně používá výchozí pracovní prostor DAO za následujících okolností:
Pokud vytvoříte nový
CDaoDatabase
objekt, ale neprojdete to prostřednictvím existujícíhoCDaoWorkspace
objektu, mfc pro vás vytvoří dočasný objekt pracovního prostoru, který odpovídá výchozímu pracovnímu prostoru DAO. Pokud to uděláte u více databází, všechny databázové objekty jsou přidružené k výchozímu pracovnímu prostoru. K pracovnímu prostoru databáze můžete přistupovat prostřednictvím datového členaCDaoDatabase
.Podobně pokud vytvoříte
CDaoRecordset
objekt bez zadání ukazatele naCDaoDatabase
objekt, MFC vytvoří dočasný databázový objekt a objekt dočasného pracovního prostoru. K databázi sady záznamů a nepřímo jeho pracovnímu prostoru můžete přistupovat prostřednictvím datového členaCDaoRecordset
.
Jiné operace
K dispozici jsou také další databázové operace, například oprava poškozené databáze nebo komprimace databáze.
Informace o přímém volání DAO a o zabezpečení DAO naleznete v technické poznámce 54.
Hierarchie dědičnosti
CDaoWorkspace
Požadavky
Záhlaví: afxdao.h
CDaoWorkspace::Append
Volání této členské funkce po volání create.
virtual void Append();
Poznámky
Append
připojí nově vytvořený objekt pracovního prostoru do kolekce Pracovních prostorů databázového stroje. Pracovní prostory se neuchovávají mezi relacemi databázového stroje; ukládají se jenom v paměti, ne na disku. Nemusíte přidávat pracovní prostor; Pokud ne, můžete ho dál používat.
Připojený pracovní prostor zůstane v kolekci Pracovních prostorů v aktivním otevřeném stavu, dokud nevoláte jeho funkci Zavřít člena.
Související informace najdete v tématu "Metoda připojení" v nápovědě k rozhraní DAO.
CDaoWorkspace::BeginTrans
Voláním této členské funkce zahájíte transakci.
void BeginTrans();
Poznámky
Po volání BeginTrans
se aktualizace dat nebo struktury databáze projeví při potvrzení transakce. Vzhledem k tomu, že pracovní prostor definuje jeden transakční prostor, transakce se vztahuje na všechny otevřené databáze v pracovním prostoru. Transakce můžete dokončit dvěma způsoby:
Volání CommitTrans členské funkce potvrzení transakce a uložení změn do zdroje dat.
Nebo voláním členské funkce Rollback zrušit transakci.
Zavření objektu pracovního prostoru nebo databázového objektu, zatímco transakce čeká na vrácení všech čekajících transakcí.
Pokud potřebujete izolovat transakce v jednom zdroji dat ODBC od těch v jiném zdroji dat ODBC, viz SetIsolateODBCTrans členské funkce.
CDaoWorkspace::CDaoWorkspace
CDaoWorkspace
Vytvoří objekt.
CDaoWorkspace();
Poznámky
Po vytvoření objektu C++ máte dvě možnosti:
Voláním členské funkce Otevřít objekt otevřete výchozí pracovní prostor nebo otevřete existující objekt v kolekci Pracovních prostorů.
Nebo zavolejte funkci Vytvořit člena objektu a vytvořte nový objekt pracovního prostoru DAO. Tím se explicitně spustí nová relace pracovního prostoru, na kterou můžete odkazovat prostřednictvím objektu
CDaoWorkspace
. Po volání můžete volatCreate
Připojit, pokud chcete přidat pracovní prostor do kolekce Pracovních prostorů databázového stroje.
Informace o tom, kdy potřebujete explicitně vytvořit CDaoWorkspace
objekt, najdete v přehledu třídy pro CDaoWorkspace. Pracovní prostory vytvořené implicitně použijete při otevření objektu CDaoDatabase bez zadání pracovního prostoru nebo při otevření objektu CDaoRecordset bez zadání databázového objektu. Objekty DAO mfc vytvořené tímto způsobem používají výchozí pracovní prostor DAO, který se vytvoří jednou a znovu použije.
Pokud chcete uvolnit pracovní prostor a jeho obsažené objekty, zavolejte funkci Zavřít člena objektu pracovního prostoru.
CDaoWorkspace::Close
Voláním této členské funkce zavřete objekt pracovního prostoru.
virtual void Close();
Poznámky
Zavření otevřeného objektu pracovního prostoru uvolní základní objekt DAO a pokud je pracovní prostor členem kolekce Pracovní prostory, odebere ho z kolekce. Volání Close
je dobrým programovacím postupem.
Upozornění
Zavření objektu pracovního prostoru zavře všechny otevřené databáze v pracovním prostoru. Výsledkem jsou všechny sady záznamů otevřené také v databázích, které se zavírají, a všechny čekající úpravy nebo aktualizace se vrátí zpět. Související informace naleznete v CDaoDatabase::Close, CDaoRecordset::Close, CDaoTableDef::Close a CDaoQueryDef::Close členské funkce.
Objekty pracovního prostoru nejsou trvalé; existují pouze v době, kdy na ně existují odkazy. To znamená, že když relace databázového stroje skončí, pracovní prostor a jeho kolekce Databáze se neuchovávají. Je nutné je znovu vytvořit pro další relaci opětovným otevřením pracovního prostoru a databází.
Související informace najdete v tématu "Zavřít metodu" v nápovědě k DAO.
CDaoWorkspace::CommitTrans
Voláním této členské funkce potvrdíte transakci, která uloží skupinu úprav a aktualizuje jednu nebo více databází v pracovním prostoru.
void CommitTrans();
Poznámky
Transakce se skládá z řady změn dat databáze nebo její struktury, počínaje voláním BeginTrans. Po dokončení transakce ji buď potvrďte, nebo ji vraťte zpět (zrušte změny) vrácením zpět. Ve výchozím nastavení se aktualizace záznamů bez transakcí potvrdí okamžitě. Volání BeginTrans
způsobí zpoždění aktualizací, dokud nebudete volat CommitTrans
.
Upozornění
V rámci jednoho pracovního prostoru jsou transakce vždy globální pro pracovní prostor a nejsou omezeny pouze na jednu databázi nebo sadu záznamů. Pokud provádíte operace s více než jednou databází nebo sadou záznamů v rámci transakce pracovního prostoru, CommitTrans
potvrdí všechny čekající aktualizace a Rollback
obnoví všechny operace s těmito databázemi a sadami záznamů.
Když zavřete databázi nebo pracovní prostor s čekajícími transakcemi, všechny transakce se vrátí zpět.
Poznámka:
Nejedná se o mechanismus dvoufázového potvrzení. Pokud se jedna aktualizace nepodaří potvrdit, ostatní se stále potvrdí.
CDaoWorkspace::CompactDatabase
Voláním této členské funkce zkomprimuje zadanou funkci Microsoft Jet (. Databáze MDB.
static void PASCAL CompactDatabase(
LPCTSTR lpszSrcName,
LPCTSTR lpszDestName,
LPCTSTR lpszLocale = dbLangGeneral,
int nOptions = 0);
static void PASCAL CompactDatabase(
LPCTSTR lpszSrcName,
LPCTSTR lpszDestName,
LPCTSTR lpszLocale,
int nOptions,
LPCTSTR lpszPassword);
Parametry
lpszSrcName
Název existující, uzavřené databáze. Může to být úplná cesta a název souboru, například C:\\MYDB. MDB". Pokud má název souboru příponu, musíte ho zadat. Pokud vaše síť podporuje jednotné zásady vytváření názvů (UNC), můžete také zadat síťovou cestu, například \\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (V řetězcích cesty jsou vyžadována dvojitá zpětná lomítka, protože znak "\" je řídicí znak jazyka C++.)
lpszDestName
Úplná cesta komprimované databáze, kterou vytváříte. Můžete také zadat síťovou cestu jako lpszSrcName. Argument lpszDestName nelze použít k zadání stejného souboru databáze jako lpszSrcName.
lpszPassword
Heslo, které se používá, když chcete komprimovat databázi chráněnou heslem. Pokud používáte verzi CompactDatabase
, která používá heslo, musíte zadat všechny parametry. Vzhledem k tomu, že se jedná o parametr connect, vyžaduje speciální formátování následujícím způsobem: ;P WD= lpszPassword. Příklad: ;P WD="Happy". (Je vyžadován počáteční středník.)
lpszLocale
Řetězcový výraz použitý k určení pořadí kolace pro vytvoření lpszDestName. Pokud tento argument vynecháte přijetím výchozí hodnoty dbLangGeneral
(viz níže), národní prostředí nové databáze je stejné jako původní databáze. Možné hodnoty jsou:
dbLangGeneral
Angličtina, němčina, francouzština, portugalština, italština a moderní španělštinadbLangArabic
ArabštinadbLangCyrillic
RuštinadbLangCzech
ČeštinadbLangDutch
HolandštinadbLangGreek
ŘečtinadbLangHebrew
HebrejštinadbLangHungarian
MaďarštinadbLangIcelandic
IslandštinadbLangNordic
Severské jazyky (pouze databázový stroj Microsoft Jet verze 1.0)dbLangNorwdan
Norština a dánštinadbLangPolish
PolštinadbLangSpanish
Tradiční španělštinadbLangSwedfin
Švédština a finštinadbLangTurkish
Turečtina
nOptions
Označuje jednu nebo více možností pro cílovou databázi lpszDestName. Pokud tento argument vynecháte přijetím výchozí hodnoty, má lpszDestName stejné šifrování a stejnou verzi jako lpszSrcName. Tuto možnost nebo dbDecrypt
možnost můžete kombinovat dbEncrypt
s jednou z možností verze pomocí bitového operátoru OR. Možné hodnoty, které určují formát databáze, nikoli verzi databázového stroje, jsou:
dbEncrypt
Zašifrujte databázi při komprimování.dbDecrypt
Dešifrujte databázi při komprimování.dbVersion10
Vytvořte databázi, která při komprimování používá databázový stroj Microsoft Jet verze 1.0.dbVersion11
Vytvořte databázi, která při komprimování používá databázový stroj Microsoft Jet verze 1.1.dbVersion20
Vytvořte databázi, která používá databázový stroj Microsoft Jet verze 2.0 při komprimování.dbVersion30
Vytvořte databázi, která při komprimování používá databázový stroj Microsoft Jet verze 3.0.
Argumentem možností můžete dbEncrypt
dbDecrypt
určit, jestli se má databáze zašifrovat nebo dešifrovat při komprimování. Pokud vynecháte šifrovací konstantu nebo pokud zahrnete obě dbDecrypt
a dbEncrypt
, lpszDestName
má stejné šifrování jako lpszSrcName
. Pomocí jedné z konstant verze v argumentu možností můžete určit verzi datového formátu pro komprimovanou databázi. Tato konstanta má vliv pouze na verzi datového formátu lpszDestName
. Můžete zadat pouze jednu konstantu verze. Pokud vynecháte konstantu verze, lpszDestName
bude mít stejnou verzi jako lpszSrcName
. Komprimovat lpszDestName
lze pouze na verzi, která je stejná nebo novější než lpszSrcName
.
Upozornění
Pokud databáze není zašifrovaná, je možné, i když implementujete zabezpečení uživatele nebo hesla, číst přímo binární diskový soubor, který tvoří databázi.
Poznámky
Když měníte data v databázi, může se soubor databáze fragmentovat a používat více místa na disku, než je potřeba. Pravidelně byste měli databázi zkomprimovat a defragmentovat soubor databáze. Komprimovaná databáze je obvykle menší. Při kopírování a komprimaci databáze můžete také změnit pořadí řazení, šifrování nebo verzi datového formátu.
Upozornění
Členová CompactDatabase
funkce nebude správně převádět úplnou databázi Microsoft Accessu z jedné verze na jinou. Převede se pouze datový formát. Objekty definované aplikací Microsoft Access, jako jsou formuláře a sestavy, se nepřevádějí. Data se ale správně převedou.
Tip
Můžete také použít CompactDatabase
ke kopírování souboru databáze.
Další informace o komprimování databází naleznete v tématu "CompactDatabase Method" v nápovědě k DAO.
CDaoWorkspace::Create
Voláním této členské funkce vytvoříte nový objekt pracovního prostoru DAO a přidružíte ho k objektu MFC CDaoWorkspace
.
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszUserName,
LPCTSTR lpszPassword);
Parametry
lpszName
Řetězec s až 14 znaky, který jednoznačně pojmenuje nový objekt pracovního prostoru. Musíte zadat název. Související informace najdete v tématu "Vlastnost názvu" v nápovědě k DAO.
lpszUserName
Uživatelské jméno vlastníka pracovního prostoru. Požadavky naleznete v lpszDefaultUser parametru SetDefaultUser členské funkce. Související informace najdete v tématu Vlastnost UserName v nápovědě k dao.
lpszPassword
Heslo pro nový objekt pracovního prostoru. Heslo může mít délku až 14 znaků a může obsahovat libovolný znak kromě ASCII 0 (null). V heslech se rozlišují velká a malá písmena. Související informace najdete v tématu "Vlastnost hesla" v nápovědě k DAO.
Poznámky
Celkový proces vytváření je následující:
Vytvoření objektu CDaoWorkspace
Voláním členské funkce objektu
Create
vytvořte podkladový pracovní prostor DAO. Musíte zadat název pracovního prostoru.Pokud chcete přidat pracovní prostor do kolekce Pracovních prostorů databázového stroje, můžete volitelně volat Připojit . S pracovním prostorem můžete pracovat bez jeho připojení.
Create
Po volání je objekt pracovního prostoru v otevřeném stavu připravený k použití. Nezavoláte Open
po Create
tom. Pokud už pracovní prostor v kolekci Pracovních prostorů existuje, nezavoláte Create
. Create
inicializuje databázový stroj, pokud ještě nebyl inicializován pro vaši aplikaci.
CDaoWorkspace::GetDatabaseCount
Voláním této členské funkce načtěte počet databázových objektů DAO v kolekci Databází pracovního prostoru. Což je počet otevřených databází v pracovním prostoru.
short GetDatabaseCount();
Návratová hodnota
Počet otevřených databází v pracovním prostoru
Poznámky
GetDatabaseCount
je užitečné, pokud potřebujete procházet všechny definované databáze v kolekci databází pracovního prostoru. Informace o dané databázi v kolekci získáte v tématu GetDatabaseInfo. Typickým použitím je volání GetDatabaseCount
počtu otevřených databází a následné použití tohoto čísla jako index smyčky pro opakované volání GetDatabaseInfo
.
CDaoWorkspace::GetDatabaseInfo
Voláním této členské funkce získáte různé druhy informací o databázi otevřené v pracovním prostoru.
void GetDatabaseInfo(
int nIndex,
CDaoDatabaseInfo& dbinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetDatabaseInfo(
LPCTSTR lpszName,
CDaoDatabaseInfo& dbinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Nulový index databázového objektu v kolekci Databáze pracovního prostoru pro vyhledávání podle indexu.
dbinfo
Odkaz na CDaoDatabaseInfo objekt, který vrací požadované informace.
dwInfoOptions
Možnosti, které určují, které informace o databázi 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, aktualizovatelný, transakce
AFX_DAO_SECONDARY_INFO primární informace plus: verze, řazení pořadí, vypršení časového limitu dotazu
AFX_DAO_ALL_INFO primární a sekundární informace plus: Připojení
lpszName
Název databázového objektu pro vyhledání podle názvu. Název je řetězec s až 14 znaky, které jednoznačně pojmenovává nový objekt pracovního prostoru.
Poznámky
Jedna verze funkce umožňuje vyhledat databázi podle indexu. Druhá verze umožňuje vyhledat databázi podle názvu.
Popis informací vrácených v dbinfo naleznete v CDaoDatabaseInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Když požadujete informace na jedné úrovni, získáte také informace o všech předchozích úrovních.
CDaoWorkspace::GetIniPath
Voláním této členské funkce získáte umístění nastavení inicializace databázového stroje Microsoft Jet v registru Systému Windows.
static CString PASCAL GetIniPath();
Návratová hodnota
A CString
obsahující umístění registru.
Poznámky
Umístění můžete použít k získání informací o nastavení databázového stroje. Vrácené informace jsou ve skutečnosti názvem podklíče registru.
Související informace najdete v tématech IniPath – vlastnost a Přizpůsobení nastavení registru systému Windows pro přístup k datům v nápovědě k dao.
CDaoWorkspace::GetIsolateODBCTrans
Voláním této členské funkce získáte aktuální hodnotu vlastnosti DAO IsolateODBCTrans pro pracovní prostor.
BOOL GetIsolateODBCTrans();
Návratová hodnota
Nenulové, pokud jsou transakce ODBC izolované; jinak 0.
Poznámky
V některých situacích může být potřeba mít více souběžných transakcí čekajících na stejnou databázi ODBC. K tomu je potřeba otevřít samostatný pracovní prostor pro každou transakci. Mějte na paměti, že i když každý pracovní prostor může mít vlastní připojení ODBC k databázi, zpomaluje se výkon systému. Vzhledem k tomu, že izolace transakcí není normálně nutná, jsou ve výchozím nastavení sdílená připojení ODBC z více objektů pracovního prostoru otevřených stejným uživatelem.
Některé servery ODBC, například Microsoft SQL Server, neumožňují souběžné transakce na jednom připojení. Pokud potřebujete mít více než jednu transakci najednou čekající na takovou databázi, nastavte vlastnost IsolateODBCTrans na TRUE v každém pracovním prostoru, jakmile ji otevřete. To vynutí samostatné připojení ODBC pro každý pracovní prostor.
Související informace naleznete v tématu "IsolateODBCTrans – vlastnost" v nápovědě k dao.
CDaoWorkspace::GetLoginTimeout
Voláním této členské funkce získáte aktuální hodnotu vlastnosti DAO LoginTimeout pro pracovní prostor.
static short PASCAL GetLoginTimeout();
Návratová hodnota
Počet sekund před chybou při pokusu o přihlášení k databázi ODBC.
Poznámky
Tato hodnota představuje počet sekund před chybou při pokusu o přihlášení k databázi ODBC. Výchozí nastavení LoginTimeout je 20 sekund. Pokud je hodnota LoginTimeout nastavená na hodnotu 0, nedojde k žádnému vypršení časového limitu a komunikace se zdrojem dat může přestat reagovat.
Při pokusu o přihlášení k databázi ODBC, jako je například Microsoft SQL Server, může dojít k selhání připojení v důsledku chyb sítě nebo kvůli tomu, že server není spuštěný. Místo čekání na připojení výchozích 20 sekund můžete určit, jak dlouho databázový stroj čeká, než způsobí chybu. K přihlášení k serveru dochází implicitně jako součást různých událostí, například spuštění dotazu na databázi externího serveru.
Související informace najdete v tématu "LoginTimeout – vlastnost" v nápovědě k DAO.
CDaoWorkspace::GetName
Voláním této členské funkce získáte uživatelem definovaný název objektu pracovního prostoru DAO, který je základem objektu CDaoWorkspace
.
CString GetName();
Návratová hodnota
A CString
obsahující uživatelem definovaný název objektu pracovního prostoru DAO.
Poznámky
Název je užitečný pro přístup k objektu pracovního prostoru DAO v kolekci Pracovních prostorů databázového stroje podle názvu.
Související informace najdete v tématu "Vlastnost názvu" v nápovědě k DAO.
CDaoWorkspace::GetUserName
Voláním této členské funkce získáte jméno vlastníka pracovního prostoru.
CString GetUserName();
Návratová hodnota
A CString
, který představuje vlastníka objektu pracovního prostoru.
Poznámky
Pokud chcete získat nebo nastavit oprávnění pro vlastníka pracovního prostoru, zavolejte daO přímo a zkontrolujte nastavení vlastnosti Oprávnění; určuje, jaká oprávnění má uživatel. K práci s oprávněními potřebujete systém. SOUBOR MDA.
Informace o přímém volání DAO naleznete v technické poznámce 54. Související informace najdete v tématu Vlastnost UserName v nápovědě k dao.
CDaoWorkspace::GetVersion
Voláním této členské funkce určíte verzi používaného databázového stroje Microsoft Jet.
static CString PASCAL GetVersion();
Návratová hodnota
A CString
, která označuje verzi databázového stroje přidruženého k objektu.
Poznámky
Vrácená hodnota představuje číslo verze ve formátu major.minor; Například "3.0". Číslo verze produktu (například 3.0) se skládá z čísla verze (3), tečky a čísla verze (0).
Související informace najdete v tématu "Vlastnost verze" v nápovědě k dao.
CDaoWorkspace::GetWorkspaceCount
Voláním této členské funkce načtěte počet objektů pracovního prostoru DAO v kolekci Pracovních prostorů databázového stroje.
short GetWorkspaceCount();
Návratová hodnota
Počet otevřených pracovních prostorů v kolekci Pracovních prostorů
Poznámky
Tento počet nezahrnuje žádné otevřené pracovní prostory, které nejsou připojené k kolekci. GetWorkspaceCount
je užitečné, pokud potřebujete procházet všechny definované pracovní prostory v kolekci Pracovních prostorů. Informace o daném pracovním prostoru v kolekci získáte v tématu GetWorkspaceInfo. Typickým využitím je volání GetWorkspaceCount
počtu otevřených pracovních prostorů a následné použití tohoto čísla jako index smyčky pro opakovaná volání GetWorkspaceInfo
.
CDaoWorkspace::GetWorkspaceInfo
Voláním této členské funkce získáte různé druhy informací o pracovním prostoru otevřeném v relaci.
void GetWorkspaceInfo(
int nIndex,
CDaoWorkspaceInfo& wkspcinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetWorkspaceInfo(
LPCTSTR lpszName,
CDaoWorkspaceInfo& wkspcinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parametry
nIndex
Index databáze v kolekci Pracovních prostorů založený na nule pro vyhledávání podle indexu.
wkspcinfo
Odkaz na CDaoWorkspaceInfo objekt, který vrací požadované informace.
dwInfoOptions
Možnosti, které určují, které informace o pracovním prostoru 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
AFX_DAO_SECONDARY_INFO Primární informace plus: Uživatelské jméno
AFX_DAO_ALL_INFO primární a sekundární informace plus: Izolace ODBCTrans
lpszName
Název objektu pracovního prostoru pro vyhledání podle názvu. Název je řetězec s až 14 znaky, které jednoznačně pojmenovává nový objekt pracovního prostoru.
Poznámky
Popis informací vrácených v wkspcinfo naleznete v CDaoWorkspaceInfo struktury. Tato struktura obsahuje členy, které odpovídají položkám informací uvedených výše v popisu dwInfoOptions. Když požadujete informace na jedné úrovni, získáte také informace o předchozích úrovních.
CDaoWorkspace::Idle
Volání Idle
, které poskytuje databázovému stroji možnost provádět úlohy na pozadí, které nemusí být aktuální kvůli intenzivnímu zpracování dat.
static void PASCAL Idle(int nAction = dbFreeLocks);
Parametry
nAction
Akce, která se má provést během zpracování nečinnosti. V současné době je dbFreeLocks
jedinou platnou akcí .
Poznámky
To se často týká víceuživatelů, v prostředích multitaskingu, ve kterých není dostatek času zpracování na pozadí, aby byly všechny záznamy v sadě záznamů aktuální.
Poznámka:
Volání Idle
není nutné s databázemi vytvořenými ve verzi 3.0 databázového stroje Microsoft Jet. Používejte Idle
pouze pro databáze vytvořené se staršími verzemi.
Zámky čtení se obvykle odeberou a data v místních objektech sady záznamů typu dynaset se aktualizují jenom v případě, že nedojde k žádným jiným akcím (včetně pohybu myší). Pokud pravidelně voláte Idle
, poskytnete databázovému stroji čas, abyste zachytili úlohy zpracování na pozadí uvolněním nepotřebných zámků čtení. Zadání konstanty jako argumentu dbFreeLocks
zpožďuje zpracování, dokud nebudou uvolněny všechny zámky čtení.
Tato členová funkce není nutná v prostředích s jedním uživatelem, pokud není spuštěno více instancí aplikace. Členová Idle
funkce může zvýšit výkon v prostředí s více uživateli, protože vynutí databázový stroj vyprázdnit data na disk a uvolnit zámky v paměti. Zámky čtení můžete uvolnit také tak, že operace budou součástí transakce.
Související informace najdete v tématu "Nečinná metoda" v nápovědě k dao.
CDaoWorkspace::IsOpen
Voláním této členské funkce určíte, zda CDaoWorkspace
je objekt otevřen. To znamená, že objekt MFC byl inicializován voláním Open nebo voláním vytvořit.
BOOL IsOpen() const;
Návratová hodnota
Nenulové, pokud je objekt pracovního prostoru otevřený; jinak 0.
Poznámky
Můžete volat libovolnou členovou funkci pracovního prostoru, která je v otevřeném stavu.
CDaoWorkspace::m_pDAOWorkspace
Ukazatel na základní objekt pracovního prostoru DAO.
Poznámky
Tento datový člen použijte, pokud potřebujete přímý přístup k podkladovému objektu DAO. Rozhraní objektu DAO můžete volat pomocí tohoto ukazatele.
Informace o přímém přístupu k objektům DAO naleznete v technické poznámce 54.
CDaoWorkspace::Open
Explicitně otevře objekt pracovního prostoru přidružený k výchozímu pracovnímu prostoru DAO.
virtual void Open(LPCTSTR lpszName = NULL);
Parametry
lpszName
Název objektu pracovního prostoru DAO, který se má otevřít – řetězec s až 14 znaky, které jednoznačně pojmenovává pracovní prostor. Přijměte výchozí hodnotu NULL a explicitně otevřete výchozí pracovní prostor. Požadavky na pojmenování najdete v parametru lpszName pro create. Související informace najdete v tématu "Vlastnost názvu" v nápovědě k DAO.
Poznámky
Po vytvoření objektu CDaoWorkspace
zavolejte tuto členovou funkci, která provede jednu z těchto možností:
Explicitně otevřete výchozí pracovní prostor. Předejte hodnotu NULL pro lpszName.
Otevřete existující
CDaoWorkspace
objekt, který je členem kolekce Pracovních prostorů podle názvu. Předejte platný název existujícího objektu pracovního prostoru.
Open
umístí objekt pracovního prostoru do otevřeného stavu a také inicializuje databázový stroj, pokud ještě nebyl inicializován pro vaši aplikaci.
Přestože lze volat mnoho CDaoWorkspace
členských funkcí pouze po otevření pracovního prostoru, následující členské funkce, které pracují s databázovým strojem, jsou k dispozici po vytvoření objektu C++, ale před voláním Open
:
CDaoWorkspace::RepairDatabase
Tuto členovou funkci zavolejte, pokud se potřebujete pokusit opravit poškozenou databázi, která přistupuje k databázovému stroji Microsoft Jet.
static void PASCAL RepairDatabase(LPCTSTR lpszName);
Parametry
lpszName
Cesta a název souboru existujícího souboru databáze stroje Microsoft Jet. Pokud tuto cestu vynecháte, prohledá se pouze aktuální adresář. Pokud váš systém podporuje jednotné zásady vytváření názvů (UNC), můžete také zadat síťovou cestu, například:\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (V řetězci cesty jsou vyžadována dvojitá zpětná lomítka, protože znak "\" je řídicí znak jazyka C++.)
Poznámky
Před opravou je nutné zavřít databázi určenou nástrojem lpszName . V prostředí s více uživateli nemůžou ostatní uživatelé při opravě otevřít lpszName . Pokud není název lpszName zavřený nebo není k dispozici pro výhradní použití, dojde k chybě.
Tato členová funkce se pokusí opravit databázi, která byla označena jako poškozená neúplnou operací zápisu. K tomu může dojít v případě, že se aplikace používající databázový stroj Microsoft Jet neočekávaně zavře kvůli výpadku napájení nebo problému s hardwarem počítače. Pokud operaci dokončíte a zavoláte funkci Zavřít člena nebo aplikaci ukončíte obvyklým způsobem, databáze nebude označena jako pravděpodobně poškozená.
Poznámka:
Po opravě databáze je také vhodné komprimovat pomocí členské funkce CompactDatabase defragmentace souboru a obnovit místo na disku.
Další informace o opravě databází naleznete v tématu "RepairDatabase Method" v nápovědě k DAO.
CDaoWorkspace::Rollback
Voláním této členské funkce ukončíte aktuální transakci a obnovíte všechny databáze v pracovním prostoru do stavu před zahájením transakce.
void Rollback();
Poznámky
Upozornění
V rámci jednoho objektu pracovního prostoru jsou transakce vždy globální pro pracovní prostor a nejsou omezeny pouze na jednu databázi nebo sadu záznamů. Pokud provádíte operace s více než jednou databází nebo sadou záznamů v rámci transakce pracovního prostoru, Rollback
obnoví všechny operace na všech těchto databázích a sadách záznamů.
Pokud zavřete objekt pracovního prostoru bez uložení nebo vrácení zpět čekajících transakcí, transakce se automaticky vrátí zpět. Pokud voláte CommitTrans nebo Rollback
bez prvního volání BeginTrans, dojde k chybě.
Poznámka:
Při zahájení transakce databázový stroj zaznamenává své operace v souboru uloženém v adresáři určeném proměnnou prostředí TEMP na pracovní stanici. Pokud soubor transakčního protokolu vyčerpá dostupné úložiště na jednotce TEMP, databázový stroj způsobí, že mfc vyvolá CDaoException
chybu (chyba DAO 2004). V tomto okamžiku, pokud zavoláte CommitTrans
, neurčitý počet operací se potvrdí, ale zbývající nedokončené operace budou ztraceny a operace se musí restartovat. Volání Rollback
uvolní transakční protokol a vrátí zpět všechny operace v transakci.
CDaoWorkspace::SetDefaultPassword
Voláním této členské funkce nastavíte výchozí heslo, které databázový stroj používá při vytvoření objektu pracovního prostoru bez konkrétního hesla.
static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);
Parametry
lpszPassword
Výchozí heslo. Heslo může mít délku až 14 znaků a může obsahovat libovolný znak kromě ASCII 0 (null). V heslech se rozlišují velká a malá písmena.
Poznámky
Výchozí heslo, které jste nastavili, platí pro nové pracovní prostory, které vytvoříte po volání. Při vytváření následných pracovních prostorů nemusíte v volání Vytvořit zadávat heslo.
Použití této členské funkce:
CDaoWorkspace
Vytvořte objekt, ale nevolejteCreate
.Zavolejte
SetDefaultPassword
a pokud chcete, SetDefaultUser.Volání
Create
tohoto objektu pracovního prostoru nebo dalších objektů bez zadání hesla
Ve výchozím nastavení je vlastnost DefaultUser nastavena na "admin" a Vlastnost DefaultPassword je nastavena na prázdný řetězec ("").
Další informace o zabezpečení najdete v tématu "Vlastnost oprávnění" v nápovědě k DAO. Související informace naleznete v tématech "DefaultPassword – vlastnost" a "DefaultUser – vlastnost" v nápovědě k DAO.
CDaoWorkspace::SetDefaultUser
Voláním této členské funkce nastavíte výchozí uživatelské jméno, které databázový stroj používá při vytvoření objektu pracovního prostoru bez konkrétního uživatelského jména.
static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);
Parametry
lpszDefaultUser
Výchozí uživatelské jméno. Uživatelské jméno může mít délku 1 až 20 znaků a může obsahovat abecední znaky. zvýrazňující znaky, čísla, mezery a symboly s výjimkou: "
(uvozovky), /
(lomítko), (zpětné lomítko), \
[ ]
(závorky), (dvojtečka), :
|
(svislé znaménko), <
(znaménko menší než), >
(znaménko +
plus), =
(symbol rovná se), ;
(středník), ,
(otazník), *
(hvězdička), úvodní mezery a řídicí znaky (ASCII 00 až ASCII 31). Související informace najdete v tématu Vlastnost UserName v nápovědě k dao.
Poznámky
Výchozí uživatelské jméno, které jste nastavili, platí pro nové pracovní prostory, které vytvoříte po volání. Při vytváření následných pracovních prostorů nemusíte v volání Vytvořit zadávat uživatelské jméno.
Použití této členské funkce:
CDaoWorkspace
Vytvořte objekt, ale nevolejteCreate
.Zavolejte
SetDefaultUser
a pokud chcete, SetDefaultPassword.Volání
Create
tohoto objektu pracovního prostoru nebo dalších objektů bez zadání uživatelského jména
Ve výchozím nastavení je vlastnost DefaultUser nastavena na "admin" a Vlastnost DefaultPassword je nastavena na prázdný řetězec ("").
Související informace naleznete v tématech "DefaultUser – vlastnost" a "DefaultPassword – vlastnost" v nápovědě k DAO.
CDaoWorkspace::SetIniPath
Voláním této členské funkce určíte umístění nastavení registru systému Windows pro databázový stroj Microsoft Jet.
static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);
Parametry
lpszRegistrySubkey
Řetězec obsahující název podklíče registru Windows pro umístění nastavení databázového stroje Microsoft Jet nebo parametrů potřebných pro instalovatelné databáze ISAM.
Poznámky
Zavolat SetIniPath
jenom v případě, že potřebujete zadat speciální nastavení. Další informace naleznete v tématu IniPath – vlastnost v nápovědě k dao.
Poznámka:
Volání SetIniPath
během instalace aplikace, ne při spuštění aplikace. SetIniPath
musí být volána před otevřením všech pracovních prostorů, databází nebo sad záznamů; v opačném případě mfc vyvolá výjimku.
Tento mechanismus můžete použít ke konfiguraci databázového stroje s uživatelským nastavením registru. Rozsah tohoto atributu je omezený na vaši aplikaci a nelze ho změnit bez restartování aplikace.
CDaoWorkspace::SetIsolateODBCTrans
Voláním této členské funkce nastavíte hodnotu vlastnosti DAO IsolateODBCTrans pro pracovní prostor.
void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);
Parametry
bIsolateODBCTrans
Pokud chcete začít izolovat transakce ODBC, předejte true. Pokud chcete zastavit izolování transakcí ODBC, předejte hodnotu FALSE.
Poznámky
V některých situacích může být potřeba mít více souběžných transakcí čekajících na stejnou databázi ODBC. K tomu je potřeba otevřít samostatný pracovní prostor pro každou transakci. I když každý pracovní prostor může mít vlastní připojení ODBC k databázi, zpomaluje se tím výkon systému. Vzhledem k tomu, že izolace transakcí není normálně nutná, jsou ve výchozím nastavení sdílená připojení ODBC z více objektů pracovního prostoru otevřených stejným uživatelem.
Některé servery ODBC, například Microsoft SQL Server, neumožňují souběžné transakce na jednom připojení. Pokud potřebujete mít více než jednu transakci najednou čekající na takovou databázi, nastavte vlastnost IsolateODBCTrans na TRUE v každém pracovním prostoru, jakmile ji otevřete. To vynutí samostatné připojení ODBC pro každý pracovní prostor.
CDaoWorkspace::SetLoginTimeout
Voláním této členské funkce nastavíte hodnotu vlastnosti DAO LoginTimeout pro pracovní prostor.
static void PASCAL SetLoginTimeout(short nSeconds);
Parametry
nSeconds
Počet sekund před chybou při pokusu o přihlášení k databázi ODBC.
Poznámky
Tato hodnota představuje počet sekund před chybou při pokusu o přihlášení k databázi ODBC. Výchozí nastavení LoginTimeout je 20 sekund. Pokud je hodnota LoginTimeout nastavená na hodnotu 0, nedojde k žádnému vypršení časového limitu a komunikace se zdrojem dat může přestat reagovat.
Při pokusu o přihlášení k databázi ODBC, jako je například Microsoft SQL Server, může dojít k selhání připojení v důsledku chyb sítě nebo kvůli tomu, že server není spuštěný. Místo čekání na připojení výchozích 20 sekund můžete určit, jak dlouho databázový stroj čeká, než způsobí chybu. K přihlášení k serveru dochází implicitně jako součást řady různých událostí, například spuštění dotazu na databázi externího serveru. Hodnota časového limitu je určena aktuálním nastavením LoginTimeout vlastnost.
Související informace najdete v tématu "LoginTimeout – vlastnost" v nápovědě k DAO.
Viz také
CObject
Třída
Graf hierarchie
CDaoDatabase
Třída
CDaoRecordset
Třída
CDaoTableDef
Třída
CDaoQueryDef
Třída
CDaoException
Třída