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. Rozhraní DAO se podporuje 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

Jméno popis
CDaoWorkspace::CDaoWorkspace Vytvoří objekt pracovního prostoru. Potom zavolejte Create nebo Open.

Veřejné metody

Jméno 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

Jméno 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 ale 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 Připojení ivity (ODBC). 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.

Funkce

Třída CDaoWorkspace poskytuje následující:

  • 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 další pracovní prostory pro správu samostatných prostorů transakcí.

  • 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 and 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í – když otevřete nové objekty CDaoDatabase nebo CDaoRecordset . Možná k němu ale budete muset přistupovat explicitně – například pro přístup k vlastnostem databázového stroje nebo ke 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 neuchovávají žádným způsobem mezi relacemi modulu datababase. 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 předtím 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 vytvoří dočasný objekt pracovního prostoru za vás, 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

Objekt CObject

CDaoWorkspace

Požadavky

Hlavička: 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; jsou uloženy pouze v paměti, ne na disku. Není nutné připojit pracovní prostor; pokud to neuděláte, můžete ho přesto použít.

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 potvrďte transakci – uložte skupinu úprav a aktualizace jedné 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 určení stejného databázového souboru jako lpszSrcName.

lpszPassword
Heslo, které se používá, když chcete komprimovat databázi chráněnou heslem. Všimněte si, že pokud používáte verzi CompactDatabase , která přebírá 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 tím, že přijmete výchozí hodnotu dbLangGeneral (viz níže), národní prostředí nové databáze je stejné jako národní prostředí staré 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, bude mít 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 dbEncryptdbDecrypt 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 bude mít 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 ovlivňuje pouze verzi datového formátu lpszDestName. Můžete zadat pouze jednu konstantu verze. Pokud vynecháte konstantu verze, bude mít lpszDestName stejnou verzi jako lpszSrcName. Můžete komprimovat lpszDestName 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, přímo číst 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 Aplikace Microsoft Access 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 Create. Pokud již pracovní prostor existuje v kolekci Pracovních prostorů, 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 – počet otevřených databází v pracovním prostoru.

short GetDatabaseCount();

Vrácená 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();

Vrácená 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í registru systému Windows Nastavení pro přístup k datům v nápovědě dao.

CDaoWorkspace::GetIsolateODBCTrans

Voláním této členské funkce získáte aktuální hodnotu vlastnosti DAO IsolateODBCTrans pro pracovní prostor.

BOOL GetIsolateODBCTrans();

Vrácená 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í obvykle nutná, jsou ve výchozím nastavení sdílena 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();

Vrácená 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 připojení selhat 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í, jako je 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();

Vrácená 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();

Vrácená 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();

Vrácená hodnota

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();

Vrácená 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í pro zachování všech záznamů v aktuální sadě záznamů.

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á, zda byl objekt MFC inicializován voláním Open nebo voláním vytvořit.

BOOL IsOpen() const;

Vrácená 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 následujících věcí:

  • 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 nemohou ostatní uživatelé při opravě otevřít lpszName . Pokud lpszName není uzavř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í dalších pracovních prostorů není nutné zadávat heslo ve volání Vytvořit .

Použití této členské funkce:

  1. CDaoWorkspace Vytvořit objekt, ale nevolat 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řit objekt, ale nevolat 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 jej 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í obvykle nutná, jsou ve výchozím nastavení sdílena 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 připojení selhat 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