次の方法で共有


CDaoWorkspace クラス

シングル ユーザーによる名前付きの、パスワードで保護されたデータベース セッションのログインからログオフまでを管理します。

Note

データ アクセス オブジェクト (DAO) は、Office 2013 でサポートされています。 DAO 3.6 は最終バージョンであり、古いと見なされます。

構文

class CDaoWorkspace : public CObject

メンバー

パブリック コンストラクター

名前 説明
CDaoWorkspace::CDaoWorkspace ワークスペース オブジェクトを構築します。 その後、 Create または Openを呼び出します。

パブリック メソッド

名前 説明
CDaoWorkspace::Append 新しく作成されたワークスペースをデータベース エンジンの Workspaces コレクションに追加します。
CDaoWorkspace::BeginTrans ワークスペースで開かれているすべてのデータベースに適用される新しいトランザクションを開始します。
CDaoWorkspace::Close ワークスペースとそのワークスペースに含まれるすべてのオブジェクトを閉じます。 保留中のトランザクションはロールバックされます。
CDaoWorkspace::CommitTrans 現在のトランザクションを完了し、変更を保存します。
CDaoWorkspace::CompactDatabase データベースを圧縮 (または複製) します。
CDaoWorkspace::Create 新しい DAO ワークスペース オブジェクトを作成します。
CDaoWorkspace::GetDatabaseCount ワークスペースの Databases コレクション内の DAO データベース オブジェクトの数を返します。
CDaoWorkspace::GetDatabaseInfo ワークスペースの Databases コレクションで定義されている、指定した DAO データベースに関する情報を返します。
CDaoWorkspace::GetIniPath Windows レジストリ内の Microsoft Jet データベース エンジンの初期化設定の場所を返します。
CDaoWorkspace::GetIsolateODBCTrans 同じ ODBC データ ソースを含む複数のトランザクションが、データ ソースへの強制的な複数の接続によって分離されるかどうかを示す値を返します。
CDaoWorkspace::GetLoginTimeout ユーザーが ODBC データベースにログインしようとしたときにエラーが発生するまでの秒数を返します。
CDaoWorkspace::GetName ワークスペース オブジェクトのユーザー定義名を返します。
CDaoWorkspace::GetUserName ワークスペースの作成時に指定されたユーザー名を返します。 これはワークスペース所有者の名前です。
CDaoWorkspace::GetVersion ワークスペースに関連付けられているデータベース エンジンのバージョンを含む文字列を返します。
CDaoWorkspace::GetWorkspaceCount データベース エンジンの Workspaces コレクション内の DAO ワークスペース オブジェクトの数を返します。
CDaoWorkspace::GetWorkspaceInfo データベース エンジンの Workspaces コレクションで定義されている、指定した DAO ワークスペースに関する情報を返します。
CDaoWorkspace::Idle データベース エンジンがバックグラウンド タスクを実行できるようにします。
CDaoWorkspace::IsOpen ワークスペースが開いている場合は、0 以外の値を返します。
CDaoWorkspace::Open DAO の既定のワークスペースに関連付けられているワークスペース オブジェクトを明示的に開きます。
CDaoWorkspace::RepairDatabase 破損したデータベースの修復を試みます。
CDaoWorkspace::Rollback 現在のトランザクションを終了し、変更を保存しません。
CDaoWorkspace::SetDefaultPassword ワークスペース オブジェクトが特定のパスワードなしで作成されるときにデータベース エンジンが使用するパスワードを設定します。
CDaoWorkspace::SetDefaultUser ワークスペース オブジェクトが特定のユーザー名なしで作成されるときにデータベース エンジンが使用するユーザー名を設定します。
CDaoWorkspace::SetIniPath Windows レジストリ内の Microsoft Jet データベース エンジンの初期化設定の場所を設定します。
CDaoWorkspace::SetIsolateODBCTrans 同じ ODBC データ ソースを含む複数のトランザクションを、データ ソースへの複数の接続を強制して分離するかどうかを指定します。
CDaoWorkspace::SetLoginTimeout ユーザーが ODBC データ ソースにログインしようとしたときにエラーが発生するまでの秒数を設定します。

パブリック データ メンバー

名前 説明
CDaoWorkspace::m_pDAOWorkspace 基になる DAO ワークスペース オブジェクトをポイントします。

解説

ほとんどの場合、複数のワークスペースは必要ありません。また、明示的なワークスペース オブジェクトを作成する必要はありません。データベース オブジェクトとレコードセット オブジェクトを開くと、DAO の既定のワークスペースが使用されます。 ただし、必要に応じて、より多くのワークスペース オブジェクトを作成することで、一度に複数のセッションを実行できます。 各ワークスペース オブジェクトには、独自の Databases コレクションに複数の開いているデータベース オブジェクトを含めることができます。 MFC では、ワークスペースは主にトランザクション マネージャーであり、開いている一連のデータベースをすべて同じ "トランザクション空間" に指定します。

Note

DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 一般に、DAO に基づく MFC クラスは、ODBC に基づく MFC クラスよりも能力が高くなります。 DAO ベースのクラスは、ODBC ドライバーを含む Microsoft Jet データベース エンジンを介してデータにアクセスします。 また、DAO を直接呼び出すことなく、データベースの作成やクラスを介したテーブルとフィールドの追加などのデータ定義言語 (DDL) 操作もサポートしています。

機能

クラス CDaoWorkspace には次の機能があります。

  • 必要に応じて、データベース エンジンを初期化して作成された既定のワークスペースへの明示的なアクセス。 通常は、データベース オブジェクトとレコードセット オブジェクトを作成することで、DAO の既定のワークスペースを暗黙的に使用します。

  • ワークスペースで開かれているすべてのデータベースにトランザクションが適用されるトランザクション領域。 複数のワークスペースを作成して、個別のトランザクション スペースを管理できます。

  • 基になる Microsoft Jet データベース エンジンの多くのプロパティへのインターフェイス (静的メンバー関数を参照)。 ワークスペースを開くか作成するか、またはオープンまたは作成する前に静的メンバー関数を呼び出すと、データベース エンジンが初期化されます。

  • データベース エンジンの Workspaces コレクションにアクセスします。このコレクションには、追加されたすべてのアクティブなワークスペースが格納されます。 コレクションにワークスペースを追加せずに、ワークスペースを作成して操作することもできます。

セキュリティ

MFC では、セキュリティ制御に使用される DAO の Users コレクションと Groups コレクションは実装されません。 DAO のこれらの側面が必要な場合は、DAO インターフェイスへの直接呼び出しを使用して自分でプログラミングする必要があります。 詳細については、 テクニカル ノート 54 を参照してください。

使用方法

クラス CDaoWorkspace を使用すると、次のことができます。

  • 既定のワークスペースを明示的に開きます。

    通常、新しい CDaoDatabase または CDaoRecordset オブジェクトを開くと、既定のワークスペースの使用は暗黙的です。 ただし、明示的にアクセスすることが必要な場合があります。 たとえば、データベース エンジンのプロパティや Workspaces コレクションにアクセスする場合などです。 以下の「既定のワークスペースの暗黙的な使用」を参照してください。

  • 新しいワークスペースを作成します。 Workspaces コレクションに追加する場合はAppend を呼び出します。

  • Workspaces コレクション内の既存のワークスペースを開きます。

Workspaces コレクションにまだ存在しない新しいワークスペースの作成については、 Create メンバー関数の下で説明します。 ワークスペース オブジェクトは、データベース エンジン セッション間で保持されません。 アプリケーションが MFC を静的にリンクしている場合、アプリケーションを終了すると、データベース エンジンが初期化解除されます。 アプリケーションが MFC と動的にリンクしている場合、MFC DLL がアンロードされるときにデータベース エンジンは初期化されません。

既定のワークスペースを明示的に開くか、ワークスペース コレクション内の既存のワークスペースを開く方法については、 Open メンバー関数の下で説明します。

ワークスペース セッションを終了するには、 Close メンバー関数を使用してワークスペースを閉じます。 Close は、閉じていないデータベースを閉じ、コミットされていないトランザクションをロールバックします。

トランザクション

DAO は、ワークスペース レベルでトランザクションを管理します。そのため、複数のデータベースが開いているワークスペース上のトランザクションは、すべてのデータベースに適用されます。 たとえば、2 つのデータベースにコミットされていない更新があり、 CommitTrans を呼び出すと、すべての更新がコミットされます。 トランザクションを 1 つのデータベースに制限する場合は、別のワークスペース オブジェクトが必要です。

既定のワークスペースの暗黙的な使用

MFC は、次の状況で DAO の既定のワークスペースを暗黙的に使用します。

  • 新しい CDaoDatabase オブジェクトを作成しても、既存の CDaoWorkspace オブジェクトを使用して作成しない場合、MFC は DAO の既定のワークスペースに対応する一時ワークスペース オブジェクトを自動的に作成します。 複数のデータベースに対してこれを行うと、すべてのデータベース オブジェクトが既定のワークスペースに関連付けられます。 CDaoDatabase データ メンバーを使用して、データベースのワークスペースにアクセスできます。

  • 同様に、CDaoDatabase オブジェクトへのポインターを指定せずにCDaoRecordset オブジェクトを作成すると、MFC によって一時データベース オブジェクトが作成され、拡張によって一時ワークスペース オブジェクトが作成されます。 CDaoRecordset データ メンバーを使用して、レコードセットのデータベースとそのワークスペースに間接的にアクセスできます。

その他の操作

破損したデータベースの修復やデータベースの圧縮など、他のデータベース操作も提供されます。

DAO を直接呼び出す方法と DAO のセキュリティについては、 テクニカル ノート 54 を参照してください。

継承階層

CObject

CDaoWorkspace

要件

ヘッダー: afxdao.h

CDaoWorkspace::Append

Create を呼び出した後、このメンバー関数を呼び出します。

virtual void Append();

解説

Append は、新しく作成されたワークスペース オブジェクトをデータベース エンジンの Workspaces コレクションに追加します。 ワークスペースはデータベース エンジン セッション間で保持されません。これらはディスクではなくメモリにのみ格納されます。 ワークスペースを追加する必要はありません。そうでない場合は、引き続き使用できます。

追加されたワークスペースは、 Close メンバー関数を呼び出すまで、アクティブで開いている状態の Workspaces コレクションに残ります。

関連情報については、DAO ヘルプの「Append メソッド」を参照してください。

CDaoWorkspace::BeginTrans

トランザクションを開始するには、このメンバー関数を呼び出します。

void BeginTrans();

解説

BeginTransを呼び出すと、トランザクションをコミットするときに、データまたはデータベース構造に対して行った更新が有効になります。 ワークスペースは 1 つのトランザクション領域を定義するため、トランザクションはワークスペース内のすべての開いているデータベースに適用されます。 トランザクションを完了するには、次の 2 つの方法があります。

  • CommitTrans メンバー関数を呼び出してトランザクションをコミットし、変更をデータ ソースに保存します。

  • または、 Rollback メンバー関数を呼び出してトランザクションを取り消します。

トランザクションが保留中の間にワークスペース オブジェクトまたはデータベース オブジェクトを閉じると、保留中のすべてのトランザクションがロールバックされます。

ある ODBC データ ソース上のトランザクションを別の ODBC データ ソース上のトランザクションから分離する必要がある場合は、 SetIsolateODBCTrans メンバー関数を参照してください。

CDaoWorkspace::CDaoWorkspace

CDaoWorkspace オブジェクトを構築します。

CDaoWorkspace();

解説

C++ オブジェクトを構築した後、次の 2 つのオプションがあります。

  • オブジェクトの Open メンバー関数を呼び出して、既定のワークスペースを開くか、Workspaces コレクション内の既存のオブジェクトを開きます。

  • または、オブジェクトの Create メンバー関数を呼び出して、新しい DAO ワークスペース オブジェクトを作成します。 これにより、 CDaoWorkspace オブジェクトを介して参照できる新しいワークスペース セッションが明示的に開始されます。 Createを呼び出した後、データベース エンジンの Workspaces コレクションにワークスペースを追加する場合は、Append を呼び出すことができます。

CDaoWorkspace オブジェクトを明示的に作成する必要がある場合の詳細については、CDaoWorkspace のクラスの概要を参照してください。 通常、ワークスペースを指定せずに CDaoDatabase オブジェクトを開くとき、またはデータベース オブジェクトを指定せずに CDaoRecordset オブジェクトを開くときに、暗黙的に作成されたワークスペースを使用します。 この方法で作成された MFC DAO オブジェクトは、DAO の既定のワークスペースを使用します。このワークスペースは 1 回作成され、再利用されます。

ワークスペースとその包含オブジェクトを解放するには、ワークスペース オブジェクトの Close メンバー関数を呼び出します。

CDaoWorkspace::Close

ワークスペース オブジェクトを閉じるには、このメンバー関数を呼び出します。

virtual void Close();

解説

開いているワークスペース オブジェクトを閉じると、基になる DAO オブジェクトが解放され、ワークスペースが Workspaces コレクションのメンバーである場合は、そのオブジェクトがコレクションから削除されます。 Closeの呼び出しは、プログラミングに適した方法です。

注意事項

ワークスペース オブジェクトを閉じると、ワークスペース内の開いているデータベースが閉じます。 これにより、データベース内のレコードセットも閉じられ、保留中の編集または更新がロールバックされます。 関連情報については、 CDaoDatabase::CloseCDaoRecordset::CloseCDaoTableDef::Close、および CDaoQueryDef::Close メンバー関数を参照してください。

ワークスペース オブジェクトは永続的ではありません。参照が存在する間のみ存在します。 つまり、データベース エンジン セッションが終了すると、ワークスペースとその Databases コレクションは保持されません。 ワークスペースとデータベースをもう一度開いて、次のセッション用に再作成する必要があります。

関連情報については、DAO ヘルプの「Close メソッド」を参照してください。

CDaoWorkspace::CommitTrans

このメンバー関数を呼び出して、編集と更新のグループをワークスペース内の 1 つ以上のデータベースに保存するトランザクションをコミットします。

void CommitTrans();

解説

トランザクションは、 BeginTrans の呼び出しから始まる、データベースのデータまたはその構造に対する一連の変更で構成されます。 トランザクションが完了したら、トランザクションをコミットするか、 Rollback を使用してロールバック (変更を取り消す) します。 既定では、トランザクションを使用しない場合、レコードの更新はすぐにコミットされます。 BeginTransを呼び出すと、CommitTransを呼び出すまで更新プログラムのコミットメントが遅延します。

注意事項

1 つのワークスペース内では、トランザクションは常にワークスペースに対してグローバルであり、1 つのデータベースまたはレコードセットのみに限定されるわけではありません。 ワークスペース トランザクション内の複数のデータベースまたはレコードセットに対して操作を実行すると、 CommitTrans は保留中のすべての更新をコミットし、それらのデータベースとレコードセットに対するすべての操作を復元 Rollback

保留中のトランザクションでデータベースまたはワークスペースを閉じると、トランザクションはすべてロールバックされます。

Note

これは 2 フェーズのコミット メカニズムではありません。 1 つの更新プログラムがコミットに失敗しても、他の更新プログラムはコミットされます。

CDaoWorkspace::CompactDatabase

このメンバー関数を呼び出して、指定した Microsoft Jet (.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);

パラメーター

lpszSrcName
既存の閉じたデータベースの名前。 完全なパスとファイル名 ("C:\\MYDB" など) を指定できます。MDB"。 ファイル名に拡張子が付いている場合は、ファイル名を指定する必要があります。 ネットワークが UNC (Uniform Naming Convention) をサポートしている場合は、"\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB" などのネットワーク パスを指定することもできます。MDB"。 ("\" は C++ エスケープ文字であるため、パス文字列には二重円記号が必要です)。

lpszDestName
作成する圧縮されたデータベースの完全パス。 ネットワーク パスは、 lpszSrcName と同様に指定することもできます。 引数 lpszDestName を使用して、 lpszSrcName と同じデータベース ファイルを指定することはできません。

lpszPassword
パスワードで保護されたデータベースを圧縮する場合に使用されるパスワード。 パスワードを受け取る CompactDatabase のバージョンを使用する場合は、すべてのパラメーターを指定する必要があります。 また、これは接続パラメーターであるため、;P WD= lpszPassword のような特殊な書式設定が必要です。 たとえば、;P WD="Happy" です。 (先頭のセミコロンは必須です)。

lpszLocale
lpszDestNameを作成するための照合順序を指定するために使用される文字列式。 dbLangGeneralの既定値を受け入れてこの引数を省略した場合 (下記参照)、新しいデータベースのロケールは古いデータベースと同じです。 次のいずれかの値になります。

  • dbLangGeneral 英語、ドイツ語、フランス語、ポルトガル語、イタリア語、現代スペイン語

  • dbLangArabic アラビア語

  • dbLangCyrillic ロシア語

  • dbLangCzech チェコ語

  • dbLangDutch オランダ語

  • dbLangGreek ギリシャ語

  • dbLangHebrew ヘブライ語

  • dbLangHungarian ハンガリー語

  • dbLangIcelandic アイスランド語

  • dbLangNordic ノルディック言語 (Microsoft Jet データベース エンジン バージョン 1.0 のみ)

  • dbLangNorwdan ノルウェー語とデンマーク語

  • dbLangPolish ポーランド語

  • dbLangSpanish スペイン語 (繁体字)

  • dbLangSwedfin スウェーデン語とフィンランド語

  • dbLangTurkish トルコ語

nOptions
ターゲット データベースの 1 つ以上のオプション ( lpszDestName を示します。 既定値を受け入れてこの引数を省略した場合、 lpszDestName は、 lpszSrcName と同じ暗号化と同じバージョンを持っています。 ビットごとの OR 演算子を使用して、 dbEncrypt または dbDecrypt オプションをいずれかのバージョン オプションと組み合わせることができます。 データベース エンジンのバージョンではなく、データベース形式を指定する使用可能な値は次のとおりです。

  • dbEncrypt 圧縮中にデータベースを暗号化します。

  • dbDecrypt 圧縮中にデータベースの暗号化を解除します。

  • dbVersion10 圧縮中に Microsoft Jet データベース エンジン バージョン 1.0 を使用するデータベースを作成します。

  • dbVersion11 圧縮中に Microsoft Jet データベース エンジン バージョン 1.1 を使用するデータベースを作成します。

  • dbVersion20 圧縮中に Microsoft Jet データベース エンジン バージョン 2.0 を使用するデータベースを作成します。

  • dbVersion30 圧縮中に Microsoft Jet データベース エンジン バージョン 3.0 を使用するデータベースを作成します。

options 引数で dbEncrypt または dbDecrypt を使用して、データベースを圧縮時に暗号化するか復号化するかを指定できます。 暗号化定数を省略した場合、または dbDecryptdbEncryptの両方を含める場合、 lpszDestNamelpszSrcNameと同じ暗号化になります。 options 引数のバージョン定数のいずれかを使用して、圧縮されたデータベースのデータ形式のバージョンを指定できます。 この定数は、 lpszDestNameのデータ形式のバージョンにのみ影響します。 指定できるバージョン定数は 1 つだけです。 バージョン定数を省略すると、 lpszDestNamelpszSrcName と同じバージョンになります。 lpszDestNameは、lpszSrcNameと同じかそれ以降のバージョンにのみ圧縮できます。

注意事項

データベースが暗号化されていない場合は、ユーザー/パスワード セキュリティを実装している場合でも、データベースを構成するバイナリ ディスク ファイルを直接読み取る可能性があります。

解説

データベース内のデータを変更すると、データベース ファイルが断片化し、必要以上に多くのディスク領域を使用する可能性があります。 データベース ファイルを最適化するには、データベースを定期的に圧縮する必要があります。 通常、圧縮されたデータベースは小さくなります。 データベースのコピーと圧縮中に、照合順序、暗号化、またはデータ形式のバージョンを変更することもできます。

注意事項

CompactDatabase メンバー関数は、完全な Microsoft Access データベースを 1 つのバージョンから別のバージョンに正しく変換しません。 データ形式のみが変換されます。 フォームやレポートなどの Microsoft Access で定義されたオブジェクトは変換されません。 ただし、データは正しく変換されます。

ヒント

CompactDatabaseを使用してデータベース ファイルをコピーすることもできます。

データベースの圧縮の詳細については、DAO ヘルプの「CompactDatabase メソッド」を参照してください。

CDaoWorkspace::Create

このメンバー関数を呼び出して、新しい DAO ワークスペース オブジェクトを作成し、MFC CDaoWorkspace オブジェクトに関連付けます。

virtual void Create(
    LPCTSTR lpszName,
    LPCTSTR lpszUserName,
    LPCTSTR lpszPassword);

パラメーター

lpszName
新しいワークスペース オブジェクトに一意の名前を付ける最大 14 文字の文字列。 名前を指定する必要があります。 関連情報については、DAO ヘルプの「Name プロパティ」を参照してください。

lpszUserName
ワークスペースの所有者のユーザー名。 要件については、SetDefaultUser メンバー関数の lpszDefaultUser パラメーターを参照してください。 関連情報については、DAO ヘルプの「UserName プロパティ」を参照してください。

lpszPassword
新しいワークスペース オブジェクトのパスワード。 パスワードの長さは最大 14 文字で、ASCII 0 (null) を除く任意の文字を含めることができます。 パスワードでは大文字と小文字が区別されます。 関連情報については、DAO ヘルプの「パスワード プロパティ」を参照してください。

解説

全体的な作成プロセスは次のとおりです。

  1. CDaoWorkspace オブジェクトを構築します。

  2. オブジェクトの Create メンバー関数を呼び出して、基になる DAO ワークスペースを作成します。 ワークスペース名を指定する必要があります。

  3. 必要に応じて、データベース エンジンの Workspaces コレクションにワークスペースを追加する場合は、 Append を呼び出します。 ワークスペースは追加せずに操作できます。

Create呼び出しの後、ワークスペース オブジェクトは開いている状態であり、使用できる状態になります。 Create後にOpenを呼び出すことはできません。 ワークスペースが Workspaces コレクションに既に存在する場合、 Create は呼び出しません。 Create は、アプリケーション用にまだ初期化されていない場合は、データベース エンジンを初期化します。

CDaoWorkspace::GetDatabaseCount

ワークスペースの Databases コレクション内の DAO データベース オブジェクトの数を取得するには、このメンバー関数を呼び出します。 ワークスペース内の開いているデータベースの数です。

short GetDatabaseCount();

戻り値

ワークスペース内の開いているデータベースの数。

解説

GetDatabaseCount は、ワークスペースの Databases コレクション内のすべての定義済みデータベースをループ処理する必要がある場合に便利です。 コレクション内の特定のデータベースに関する情報を取得するには、「 GetDatabaseInfoを参照してください。 一般的な使用方法は、開いているデータベースの数に対して GetDatabaseCount を呼び出し、その番号を GetDatabaseInfoの繰り返し呼び出しのループ インデックスとして使用することです。

CDaoWorkspace::GetDatabaseInfo

このメンバー関数を呼び出して、ワークスペースで開いているデータベースに関するさまざまな種類の情報を取得します。

void GetDatabaseInfo(
    int nIndex,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetDatabaseInfo(
    LPCTSTR lpszName,
    CDaoDatabaseInfo& dbinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

パラメーター

nIndex
ワークスペースの Databases コレクション内のデータベース オブジェクトの 0 から始まるインデックス。インデックスによる参照用です。

dbinfo
要求された情報を返す CDaoDatabaseInfo オブジェクトへの参照。

dwInfoOptions
取得するデータベースに関する情報を指定するオプション。 使用可能なオプションと、関数が返す原因を次に示します。

  • AFX_DAO_PRIMARY_INFO (既定) 名、更新可能、トランザクション

  • AFX_DAO_SECONDARY_INFO主な情報に加えて、バージョン、照合順序、クエリ タイムアウト

  • AFX_DAO_ALL_INFOプライマリとセカンダリの情報に加えて:接続

lpszName
名前で検索するデータベース オブジェクトの名前。 名前は、新しいワークスペース オブジェクトに一意の名前を付ける最大 14 文字の文字列です。

解説

関数の 1 つのバージョンでは、インデックスでデータベースを検索できます。 もう 1 つのバージョンでは、名前でデータベースを検索できます。

dbinfo で返される情報の説明については、CDaoDatabaseInfo 構造体を参照してください。 この構造体には、 dwInfoOptions の説明に記載されている情報の項目に対応するメンバーがあります。 1 つのレベルで情報を要求すると、以前のレベルの情報も取得されます。

CDaoWorkspace::GetIniPath

このメンバー関数を呼び出して、Windows レジストリ内の Microsoft Jet データベース エンジンの初期化設定の場所を取得します。

static CString PASCAL GetIniPath();

戻り値

レジストリの場所を含む CString

解説

この場所を使用して、データベース エンジンの設定に関する情報を取得できます。 返される情報は、実際にはレジストリ サブキーの名前です。

関連情報については、DAO ヘルプの「IniPath プロパティ」および「データ アクセス用の Windows レジストリ設定のカスタマイズ」のトピックを参照してください。

CDaoWorkspace::GetIsolateODBCTrans

このメンバー関数を呼び出して、ワークスペースの DAO IsolateODBCTrans プロパティの現在の値を取得します。

BOOL GetIsolateODBCTrans();

戻り値

ODBC トランザクションが分離されている場合は 0 以外。それ以外の場合は 0。

解説

状況によっては、同じ ODBC データベースで複数の同時トランザクションが保留されている必要がある場合があります。 これを行うには、トランザクションごとに個別のワークスペースを開く必要があります。 各ワークスペースはデータベースへの独自の ODBC 接続を持つことができますが、これによりシステムのパフォーマンスが低下することに注意してください。 トランザクションの分離は通常必要ないため、同じユーザーによって開かれた複数のワークスペース オブジェクトからの ODBC 接続は、既定で共有されます。

Microsoft SQL Server などの一部の ODBC サーバーでは、1 つの接続で同時トランザクションが許可されません。 このようなデータベースに対して一度に複数のトランザクションを保留中にする必要がある場合は、開いたらすぐに各ワークスペースで IsolateODBCTrans プロパティを TRUE に設定します。 これにより、ワークスペースごとに個別の ODBC 接続が強制されます。

関連情報については、DAO ヘルプの「IsolateODBCTrans プロパティ」を参照してください。

CDaoWorkspace::GetLoginTimeout

このメンバー関数を呼び出して、ワークスペースの DAO LoginTimeout プロパティの現在の値を取得します。

static short PASCAL GetLoginTimeout();

戻り値

ODBC データベースにログインしようとしたときにエラーが発生するまでの秒数。

解説

この値は、ODBC データベースにログインしようとしたときにエラーが発生するまでの秒数を表します。 既定の LoginTimeout 設定は 20 秒です。 LoginTimeout が 0 に設定されている場合、タイムアウトは発生せず、データ ソースとの通信が応答しなくなる可能性があります。

Microsoft SQL Server などの ODBC データベースにログインしようとすると、ネットワーク エラーの結果、またはサーバーが実行されていないために接続が失敗する可能性があります。 既定の 20 秒間の接続を待つ代わりに、データベース エンジンがエラーを生成するまでの待機時間を指定できます。 サーバーへのログインは、外部サーバー データベースでクエリを実行するなど、さまざまなイベントの一部として暗黙的に行われます。

関連情報については、DAO ヘルプの「LoginTimeout プロパティ」を参照してください。

CDaoWorkspace::GetName

このメンバー関数を呼び出して、 CDaoWorkspace オブジェクトの基になる DAO ワークスペース オブジェクトのユーザー定義名を取得します。

CString GetName();

戻り値

DAO ワークスペース オブジェクトのユーザー定義名を含む CString

解説

この名前は、データベース エンジンの Workspaces コレクション内の DAO ワークスペース オブジェクトに名前でアクセスする場合に便利です。

関連情報については、DAO ヘルプの「Name プロパティ」を参照してください。

CDaoWorkspace::GetUserName

このメンバー関数を呼び出して、ワークスペースの所有者の名前を取得します。

CString GetUserName();

戻り値

ワークスペース オブジェクトの所有者を表す CString

解説

ワークスペース所有者のアクセス許可を取得または設定するには、DAO を直接呼び出して Permissions プロパティの設定を確認します。これにより、ユーザーが持つアクセス許可が決まります。 アクセス許可を操作するには、SYSTEM が必要です。MDA ファイル。

DAO を直接呼び出す方法については、 テクニカル ノート 54 を参照してください。 関連情報については、DAO ヘルプの「UserName プロパティ」を参照してください。

CDaoWorkspace::GetVersion

このメンバー関数を呼び出して、使用中の Microsoft Jet データベース エンジンのバージョンを確認します。

static CString PASCAL GetVersion();

戻り値

オブジェクトに関連付けられているデータベース エンジンのバージョンを示す CString

解説

返される値は、"major.minor" という形式のバージョン番号を表します。たとえば、"3.0" などです。 製品バージョン番号 (3.0 など) は、バージョン番号 (3)、期間、リリース番号 (0) で構成されます。

関連情報については、DAO ヘルプの「Version プロパティ」を参照してください。

CDaoWorkspace::GetWorkspaceCount

このメンバー関数を呼び出して、データベース エンジンの Workspaces コレクション内の DAO ワークスペース オブジェクトの数を取得します。

short GetWorkspaceCount();

戻り値

Workspaces コレクション内の開いているワークスペースの数。

解説

この数には、コレクションに追加されていない開いているワークスペースは含まれません。 GetWorkspaceCount は、Workspaces コレクション内のすべての定義済みワークスペースをループ処理する必要がある場合に便利です。 コレクション内の特定のワークスペースに関する情報を取得するには、「 GetWorkspaceInfoを参照してください。 一般的な使用方法は、開いているワークスペースの数に対して GetWorkspaceCount を呼び出し、その番号を GetWorkspaceInfoの繰り返し呼び出しのループ インデックスとして使用することです。

CDaoWorkspace::GetWorkspaceInfo

このメンバー関数を呼び出して、セッションで開いているワークスペースに関するさまざまな種類の情報を取得します。

void GetWorkspaceInfo(
    int nIndex,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetWorkspaceInfo(
    LPCTSTR lpszName,
    CDaoWorkspaceInfo& wkspcinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

パラメーター

nIndex
インデックスによる検索用に、Workspaces コレクション内のデータベース オブジェクトの 0 から始まるインデックス。

wkspcinfo
要求された情報を返す CDaoWorkspaceInfo オブジェクトへの参照。

dwInfoOptions
取得するワークスペースに関する情報を指定するオプション。 使用可能なオプションと、関数が返す原因を次に示します。

  • AFX_DAO_PRIMARY_INFO (既定) 名

  • AFX_DAO_SECONDARY_INFOプライマリ情報に加えて:ユーザー名

  • AFX_DAO_ALL_INFOプライマリとセカンダリの情報に加えて:ODBCTrans の分離

lpszName
名前による参照用のワークスペース オブジェクトの名前。 名前は、新しいワークスペース オブジェクトに一意の名前を付ける最大 14 文字の文字列です。

解説

wkspcinfo で返される情報の説明については、CDaoWorkspaceInfo 構造体を参照してください。 この構造体には、 dwInfoOptions の説明に記載されている情報の項目に対応するメンバーがあります。 1 つのレベルで情報を要求すると、以前のレベルの情報も取得されます。

CDaoWorkspace::Idle

Idleを呼び出して、データ処理が激しいために最新ではない可能性があるバックグラウンド タスクを実行する機会をデータベース エンジンに提供します。

static void PASCAL Idle(int nAction = dbFreeLocks);

パラメーター

nAction
アイドル処理中に実行するアクション。 現在、唯一有効なアクションは dbFreeLocksです。

解説

これは多くの場合、レコードセット内のすべてのレコードを最新の状態に保つために十分なバックグラウンド処理時間がないマルチユーザーマルチタスク環境で当てはまります。

Note

Microsoft Jet データベース エンジンのバージョン 3.0 で作成されたデータベースでは、 Idle を呼び出す必要はありません。 Idleは、以前のバージョンで作成されたデータベースにのみ使用します。

通常、読み取りロックは削除され、ローカル ダイナセット タイプのレコードセット オブジェクトのデータは、他のアクション (マウスの動きを含む) が発生していない場合にのみ更新されます。 Idleを定期的に呼び出す場合は、不要な読み取りロックを解放することで、バックグラウンド処理タスクに追いつくためにデータベース エンジンに時間を提供します。 引数として dbFreeLocks 定数を指定すると、すべての読み取りロックが解放されるまで処理が遅れます。

このメンバー関数は、アプリケーションの複数のインスタンスが実行されていない限り、シングル ユーザー環境では必要ありません。 Idleメンバー関数は、データベース エンジンが強制的にデータをディスクにフラッシュし、メモリのロックを解放するため、マルチユーザー環境のパフォーマンスを向上させる可能性があります。 操作をトランザクションの一部にすることで、読み取りロックを解放することもできます。

関連情報については、DAO ヘルプの「Idle メソッド」を参照してください。

CDaoWorkspace::IsOpen

このメンバー関数を呼び出して、 CDaoWorkspace オブジェクトが開いているかどうかを判断します。 つまり、MFC オブジェクトは、 Open または Create の呼び出しによって初期化されています。

BOOL IsOpen() const;

戻り値

ワークスペース オブジェクトが開いている場合は 0 以外。それ以外の場合は 0。

解説

開いている状態のワークスペースのメンバー関数を呼び出すことができます。

CDaoWorkspace::m_pDAOWorkspace

基になる DAO ワークスペース オブジェクトへのポインター。

解説

基になる DAO オブジェクトに直接アクセスする必要がある場合は、このデータ メンバーを使用します。 DAO オブジェクトのインターフェイスは、このポインターを使用して呼び出すことができます。

DAO オブジェクトに直接アクセスする方法については、「 テクニカル ノート 54を参照してください。

CDaoWorkspace::Open

DAO の既定のワークスペースに関連付けられているワークスペース オブジェクトを明示的に開きます。

virtual void Open(LPCTSTR lpszName = NULL);

パラメーター

lpszName
開く DAO ワークスペース オブジェクトの名前です。ワークスペースに一意の名前を付ける最大 14 文字の文字列です。 既定値の NULL をそのまま使用して、既定のワークスペースを明示的に開きます。 名前付けの要件については、CreatelpszName パラメーターを参照してください。 関連情報については、DAO ヘルプの「Name プロパティ」を参照してください。

解説

CDaoWorkspace オブジェクトを構築した後、このメンバー関数を呼び出して、次のいずれかを実行します。

  • 既定のワークスペースを明示的に開きます。 lpszName に NULL を渡します。

  • ワークスペース コレクションのメンバーである既存の CDaoWorkspace オブジェクトを名前で開きます。 既存のワークスペース オブジェクトの有効な名前を渡します。

Open は、ワークスペース オブジェクトをオープン状態にし、アプリケーション用にまだ初期化されていない場合は、データベース エンジンも初期化します。

多くの CDaoWorkspace メンバー関数はワークスペースを開いた後にのみ呼び出すことができますが、C++ オブジェクトの構築後、 Openの呼び出しの前に、データベース エンジンで動作する次のメンバー関数を使用できます。

CDaoWorkspace::RepairDatabase

Microsoft Jet データベース エンジンにアクセスする破損したデータベースを修復する必要がある場合は、このメンバー関数を呼び出します。

static void PASCAL RepairDatabase(LPCTSTR lpszName);

パラメーター

lpszName
既存の Microsoft Jet エンジン データベース ファイルのパスとファイル名。 パスを省略すると、現在のディレクトリのみが検索されます。 システムが UNC (Uniform Naming Convention) をサポートしている場合は、"\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB" などのネットワーク パスを指定することもできます。MDB"。 ("\" は C++ エスケープ文字であるため、パス文字列には二重円記号が必要です)。

解説

修復する前に、 lpszName で指定されたデータベースを閉じる必要があります。 マルチユーザー環境では、修復中に他のユーザーが lpszName を開いたままにすることはできません。 lpszNameが閉じていないか、排他的に使用できない場合は、エラーが発生します。

このメンバー関数は、不完全な書き込み操作によって破損している可能性があるとマークされたデータベースの修復を試みます。 これは、Microsoft Jet データベース エンジンを使用しているアプリケーションが、停電やコンピューターハードウェアの問題のために予期せず閉じられた場合に発生する可能性があります。 操作を完了して Close メンバー関数を呼び出すか、通常の方法でアプリケーションを終了した場合、データベースは破損している可能性があるとマークされません。

Note

データベースを修復した後は、 CompactDatabase メンバー関数を使用してデータベースを圧縮し、ファイルを最適化し、ディスク領域を回復することをお勧めします。

データベースの修復の詳細については、DAO ヘルプの「RepairDatabase メソッド」を参照してください。

CDaoWorkspace::Rollback

このメンバー関数を呼び出して、現在のトランザクションを終了し、ワークスペース内のすべてのデータベースを、トランザクションが開始される前の状態に復元します。

void Rollback();

解説

注意事項

1 つのワークスペース オブジェクト内では、トランザクションは常にワークスペースに対してグローバルであり、1 つのデータベースまたはレコードセットのみに限定されません。 ワークスペース トランザクション内の複数のデータベースまたはレコードセットに対して操作を実行する場合、 Rollback は、すべてのデータベースとレコードセットに対するすべての操作を復元します。

保留中のトランザクションを保存またはロールバックせずにワークスペース オブジェクトを閉じると、トランザクションは自動的にロールバックされます。 最初に BeginTrans を呼び出さずに CommitTrans またはRollbackを呼び出すと、エラーが発生します。

Note

トランザクションを開始すると、データベース エンジンは、ワークステーション上の TEMP 環境変数で指定されたディレクトリに保持されているファイルにその操作を記録します。 トランザクション ログ ファイルが TEMP ドライブ上の使用可能な記憶域を使い果たすと、データベース エンジンによって MFC によって CDaoException がスローされます (DAO エラー 2004)。 この時点で、 CommitTransを呼び出すと、不確定な数の操作がコミットされますが、残りの未完了の操作は失われ、操作を再開する必要があります。 Rollbackを呼び出すと、トランザクション ログが解放され、トランザクション内のすべての操作がロールバックされます。

CDaoWorkspace::SetDefaultPassword

このメンバー関数を呼び出して、ワークスペース オブジェクトが特定のパスワードなしで作成されるときにデータベース エンジンが使用する既定のパスワードを設定します。

static void PASCAL SetDefaultPassword(LPCTSTR lpszPassword);

パラメーター

lpszPassword
既定のパスワード。 パスワードの長さは最大 14 文字で、ASCII 0 (null) を除く任意の文字を含めることができます。 パスワードでは大文字と小文字が区別されます。

解説

設定した既定のパスワードは、呼び出し後に作成する新しいワークスペースに適用されます。 後続のワークスペースを作成するときに、 Create 呼び出しでパスワードを指定する必要はありません。

このメンバー関数を使用するには:

  1. CDaoWorkspace オブジェクトを作成しますが、Createは呼び出しません。

  2. SetDefaultPasswordを呼び出し、必要にSetDefaultUserします。

  3. パスワードを指定せずに、このワークスペース オブジェクトまたはその後のワークスペース オブジェクトの Create を呼び出します。

既定では、DefaultUser プロパティは "admin" に設定され、DefaultPassword プロパティは空の文字列 ("") に設定されます。

セキュリティの詳細については、DAO ヘルプの「Permissions プロパティ」を参照してください。 関連情報については、DAO ヘルプの「DefaultPassword プロパティ」および「DefaultUser プロパティ」のトピックを参照してください。

CDaoWorkspace::SetDefaultUser

このメンバー関数を呼び出して、ワークスペース オブジェクトが特定のユーザー名なしで作成されるときにデータベース エンジンが使用する既定のユーザー名を設定します。

static void PASCAL SetDefaultUser(LPCTSTR lpszDefaultUser);

パラメーター

lpszDefaultUser
既定のユーザー名。 ユーザー名の長さは 1 ~ 20 文字で、英字、アクセント付き文字、数字、 スペース、および記号を除く: " (引用符)、 / (スラッシュ)、 \ (円記号) )、 [ ] (角かっこ)、 : (コロン)、 | (パイプ)、 < (大なり記号)、 > (正符号)、 + = (等号)、 ; (セミコロン)、 , (コンマ)、(疑問符)、 * (アスタリスク)、および制御文字 (ASCII 00 から ASCII 31)。 関連情報については、DAO ヘルプの「UserName プロパティ」を参照してください。

解説

設定した既定のユーザー名は、呼び出し後に作成する新しいワークスペースに適用されます。 後続のワークスペースを作成するときに、 Create 呼び出しでユーザー名を指定する必要はありません。

このメンバー関数を使用するには:

  1. CDaoWorkspace オブジェクトを作成しますが、Createは呼び出しません。

  2. SetDefaultUserを呼び出し、必要にSetDefaultPasswordします。

  3. ユーザー名を指定せずに、このワークスペース オブジェクトまたはその後のワークスペース オブジェクトの Create を呼び出します。

既定では、DefaultUser プロパティは "admin" に設定され、DefaultPassword プロパティは空の文字列 ("") に設定されます。

関連情報については、DAO ヘルプの「DefaultUser プロパティ」および「DefaultPassword プロパティ」のトピックを参照してください。

CDaoWorkspace::SetIniPath

このメンバー関数を呼び出して、Microsoft Jet データベース エンジンの Windows レジストリ設定の場所を指定します。

static void PASCAL SetIniPath(LPCTSTR lpszRegistrySubKey);

パラメーター

lpszRegistrySubkey
インストール可能な ISAM データベースに必要な Microsoft Jet データベース エンジンの設定またはパラメーターの場所の Windows レジストリ サブキーの名前を含む文字列。

解説

特別な設定を指定する必要がある場合にのみ、 SetIniPath を呼び出します。 詳細については、DAO ヘルプのトピック「IniPath プロパティ」を参照してください。

Note

アプリケーションの実行時ではなく、アプリケーションのインストール中に SetIniPath を呼び出します。 SetIniPath は、ワークスペース、データベース、またはレコードセットを開く前に呼び出す必要があります。それ以外の場合、MFC は例外をスローします。

このメカニズムを使用して、ユーザー指定のレジストリ設定を使用してデータベース エンジンを構成できます。 この属性のスコープはアプリケーションに限定され、アプリケーションを再起動しないと変更できません。

CDaoWorkspace::SetIsolateODBCTrans

このメンバー関数を呼び出して、ワークスペースの DAO IsolateODBCTrans プロパティの値を設定します。

void SetIsolateODBCTrans(BOOL bIsolateODBCTrans);

パラメーター

bIsolateODBCTrans
ODBC トランザクションの分離を開始する場合は TRUE を渡します。 ODBC トランザクションの分離を停止する場合は FALSE を渡します。

解説

状況によっては、同じ ODBC データベースで複数の同時トランザクションが保留されている必要がある場合があります。 これを行うには、トランザクションごとに個別のワークスペースを開く必要があります。 各ワークスペースはデータベースへの独自の ODBC 接続を持つことができますが、これによりシステムのパフォーマンスが低下します。 トランザクションの分離は通常必要ないため、同じユーザーによって開かれた複数のワークスペース オブジェクトからの ODBC 接続は、既定で共有されます。

Microsoft SQL Server などの一部の ODBC サーバーでは、1 つの接続で同時トランザクションが許可されません。 このようなデータベースに対して一度に複数のトランザクションを保留中にする必要がある場合は、開いたらすぐに各ワークスペースで IsolateODBCTrans プロパティを TRUE に設定します。 これにより、ワークスペースごとに個別の ODBC 接続が強制されます。

CDaoWorkspace::SetLoginTimeout

このメンバー関数を呼び出して、ワークスペースの DAO LoginTimeout プロパティの値を設定します。

static void PASCAL SetLoginTimeout(short nSeconds);

パラメーター

nSeconds
ODBC データベースにログインしようとしたときにエラーが発生するまでの秒数。

解説

この値は、ODBC データベースにログインしようとしたときにエラーが発生するまでの秒数を表します。 既定の LoginTimeout 設定は 20 秒です。 LoginTimeout が 0 に設定されている場合、タイムアウトは発生せず、データ ソースとの通信が応答しなくなる可能性があります。

Microsoft SQL Server などの ODBC データベースにログインしようとすると、ネットワーク エラーの結果、またはサーバーが実行されていないために接続が失敗する可能性があります。 既定の 20 秒間の接続を待つ代わりに、データベース エンジンがエラーを生成するまでの待機時間を指定できます。 サーバーへのログオンは、外部サーバー データベースでクエリを実行するなど、さまざまなイベントの一部として暗黙的に実行されます。 タイムアウト値は、LoginTimeout プロパティの現在の設定によって決まります。

関連情報については、DAO ヘルプの「LoginTimeout プロパティ」を参照してください。

関連項目

CObject クラス
階層図
CDaoDatabase クラス
CDaoRecordset クラス
CDaoTableDef クラス
CDaoQueryDef クラス
CDaoException クラス