「OLE DB コンシューマーを作成する

ATL COM AppWizardとATL オブジェクトウィザードを使用して、OLE DB テンプレート コンシューマーを生成できます。 。

ATL プロジェクトを OLE DB コンシューマーを作成するには

  1. [ファイル] メニューから [新規を選択します。[新規作成] ダイアログ ボックスが表示されます。

  2. [プロジェクト] タブで、 ATL COM AppWizardを選択します。

    [プロジェクト] タブで、プロジェクトの名前、 [ok]をクリックします。ATL COM AppWizard を表示します。

  3. ATL COM AppWizard では、プロジェクトの種類を選択します。

  4. 終了し、 [ok]をクリックします。

次に、ATL オブジェクト ウィザードを使用します。

ATL オブジェクト ウィザードを使用するには

  1. [挿入] メニューから、新しい ATL オブジェクトを選択します。ATL オブジェクト ウィザードが表示されます。

  2. 左側のウィンドウでは、データ アクセスを選択します。右側のウィンドウで、消費者のアイコンが表示されます。

  3. 消費者のアイコンを選択し、次をクリックします。ATL オブジェクト ウィザードのプロパティ] ダイアログ ボックスが表示されます。

ATL オブジェクト ウィザードを使用してあなたの消費者のためのプロパティを設定するには。

ATL オブジェクト ウィザードを使用して消費者のプロパティを設定するには

  1. [ ATL オブジェクト ウィザードのプロパティ] ダイアログ ボックスで、[データソースの選択] ボタンをクリックします。[新しいリンクの作成] ダイアログ ボックスが表示されます。

  2. 新しいリンクの作成] ダイアログ ボックスで、OLE DB プロバイダーとなど、適切なオプションを選択します。:
    • 場所とデータ ソースのデータ プロバイダーで使用するために。

    • ログオン ID とパスワードをデータ ソース。

    あなたのプロバイダーとその他の設定を選択した後、前のダイアログ ボックス ページで行った選択を確認するには、接続のテストをクリックします。[結果] ボックスが報告された場合 PASSED 、データ リンクを作成する終了] をクリックします。データベース テーブルの選択] ダイアログ ボックスが表示されます。

  3. データベース テーブルの選択] ダイアログ ボックスでは、ツリー コントロール、テーブル、クエリ、またはストアド プロシージャを選択し、 [ok]をクリックします。[ ATL オブジェクト ウィザードのプロパティ] ダイアログ ボックスに戻る。

  4. ダイアログ ボックスの名に、短い名前、クラス、アクセサー、およびはいっぱいになります。H ファイル。最後の 4 つは、短い名前に基づいています。これらの名前は必要に応じて編集することができます。

  5. ウィザード、 CCommand作成-デフォルトで消費者に基づきます。CTableを好む場合-消費者は、ベーステーブルのボタンを選択。

  6. 変更、挿入、および削除変更、挿入、および行セット内のレコードを削除するために必要な場合をサポートします。

  7. [Ok]をクリックします。

ウィザード ジェネレーター アクセサー クラスおよびサンプルで示すように、コマンド (またはテーブル) クラスが以下を出力します。コマンド クラスには、データ ソースと、ウィザードで指定した行セットを開くコードが含まれます。アクセサー クラスが含まれている、選択したデータベース テーブルの列マップ。

// Product.H : Declaration of the CProduct class
#ifndef __PRODUCT_H_
#define __PRODUCT_H_
class CProductAccessor
{
public:
   LONG m_ProductID;   // Number automatically assigned to new product.
   TCHAR m_ProductName[41];   // Number automatically assigned to new product.
   LONG m_SupplierID;   // Same entry as in Suppliers table.
   LONG m_CategoryID;   // Same entry as in Categories table.
   TCHAR m_QuantityPerUnit[21];   // (e.g., 24-count case, 1-liter bottle).
   DB_NUMERIC m_UnitPrice;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsInStock;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_UnitsOnOrder;   // (e.g., 24-count case, 1-liter bottle).
   SHORT m_ReorderLevel;   // Minimum units to maintain in stock.
   VARIANT_BOOL m_Discontinued;   // Yes means item is no longer available.

BEGIN_COLUMN_MAP(CProductAccessor)
   COLUMN_ENTRY(1, m_ProductID)
   COLUMN_ENTRY(2, m_ProductName)
   COLUMN_ENTRY(3, m_SupplierID)
   COLUMN_ENTRY(4, m_CategoryID)
   COLUMN_ENTRY(5, m_QuantityPerUnit)
   COLUMN_ENTRY(6, m_UnitPrice)
   COLUMN_ENTRY(7, m_UnitsInStock)
   COLUMN_ENTRY(8, m_UnitsOnOrder)
   COLUMN_ENTRY(9, m_ReorderLevel)
   COLUMN_ENTRY_TYPE(10, DBTYPE_BOOL, m_Discontinued)
END_COLUMN_MAP()
DEFINE_COMMAND(CProductAccessor, _T(" \
   SELECT \
      ProductID, \
      ProductName, \
      SupplierID, \
      CategoryID, \
      QuantityPerUnit, \
      UnitPrice, \
      UnitsInStock, \
      UnitsOnOrder, \
      ReorderLevel, \
      Discontinued  \
      FROM Products"))};
class CProduct : public CCommand<CAccessor<CProductAccessor> >
{
public:
   HRESULT Open()
   {
      HRESULT      hr;
      hr = OpenDataSource();
      if (FAILED(hr))
         return hr;
      return OpenRowset();
   }
   HRESULT OpenDataSource()
   {
      HRESULT      hr;
      CDataSource db;
      CDBPropSet   dbinit(DBPROPSET_DBINIT);
      dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("OLE_DB_NWind_Jet"));
      dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
      dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
      hr = db.Open(_T("MSDASQL"), &dbinit);
      if (FAILED(hr))
         return hr;
      return m_session.Open(db);
   }
   HRESULT OpenRowset()
   {
      // Set properties for open
      CDBPropSet   propset(DBPROPSET_ROWSET);
      propset.AddProperty(DBPROP_IRowsetChange, true);
      propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE);
      return CCommand<CAccessor<CProductAccessor> >::Open(m_session, NULL, &propset);
   }
   CSession   m_session;
};
#endif // __PRODUCT_H_

OLE DB コンシューマー テンプレートの使用に戻る

Index