Sdílet prostřednictvím


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ího CDaoWorkspace 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 člena CDaoDatabase .

  • Podobně pokud vytvoříte CDaoRecordset objekt bez zadání ukazatele na CDaoDatabase 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 člena CDaoRecordset .

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

CObject

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í BeginTransse 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:

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 volat CreatePř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ština

  • dbLangArabic Arabština

  • dbLangCyrillic Ruština

  • dbLangCzech Čeština

  • dbLangDutch Holandština

  • dbLangGreek Řečtina

  • dbLangHebrew Hebrejština

  • dbLangHungarian Maďarština

  • dbLangIcelandic Islandština

  • dbLangNordic Severské jazyky (pouze databázový stroj Microsoft Jet verze 1.0)

  • dbLangNorwdan Norština a dánština

  • dbLangPolish Polština

  • dbLangSpanish Tradiční španělština

  • dbLangSwedfin Švédština a finština

  • dbLangTurkish 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í:

  1. Vytvoření objektu CDaoWorkspace

  2. Voláním členské funkce objektu Create vytvořte podkladový pracovní prostor DAO. Musíte zadat název pracovního prostoru.

  3. 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 Createtom. 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 dbFreeLocksjedinou 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:

  1. CDaoWorkspace Vytvořte objekt, ale nevolejte Create.

  2. Zavolejte SetDefaultPassword a pokud chcete, SetDefaultUser.

  3. 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:

  1. CDaoWorkspace Vytvořte objekt, ale nevolejte Create.

  2. Zavolejte SetDefaultUser a pokud chcete, SetDefaultPassword.

  3. 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