難易度 : 中。基本的なマクロ、コーディング、相互運用性に関する知識が必要です。



この資料は Microsoft Access データベース (.accdb および .mdb) についてのみ記述したものです。

概要

この資料では、VBA (Microsoft Visual Basic for Applications) で ADO (Microsoft ActiveX Data Objects) を使用して、SQL パススルー クエリを作成する方法について説明します。

詳細

SQL パススルー クエリを作成する関数を VBA で記述できます。SQL パススルー クエリは、SQL ステートメントおよび接続文字列で構成されます。クエリを実行すると、コマンドがデータベース サーバーに直接送信されて処理されます。これにより、Microsoft Jet データベース エンジンのオーバーヘッドを回避できます。



DAO (Data Access Object) モデルでは、外部データにアクセスする際に SQL パススルー クエリを使用することで、パフォーマンスが向上する可能性があります。ADO では、Microsoft OLE DB Provider for SQL Server を使用して、Microsoft Jet や ODBC のオーバーヘッドなしに SQL サーバーに直接アクセスできます。また、Microsoft OLE DB Provider for ODBC を使用して、任意の ODBC データ ソースのデータにもアクセスできます。



パフォーマンスを向上させるために Microsoft Jet データベースで SQL パススルー クエリを作成する必要はありませんが、ADOX および Jet Provider を使用することにより、SQL パススルー クエリを作成することができます。以下のコードは、SQL パススルー クエリを作成する方法を示しています。



注 : この資料のサンプル コードでは、ADO および ADOX (ActiveX Data Objects Extensions for Data Definition Language and Security) の両方が使用されています。このコードを正常に実行するには、Visual Basic Editor で [ツール] メニューの [参照設定] をクリックして、次の 2 つの参照が選択されていることを確認する必要があります。

Microsoft ActiveX Data Objects 2.1 Library

Microsoft ADO Ext. 2.6 for DDL and Security
マイクロソフトは、この情報をプログラミング言語の使用方法の一例として提供するだけであり、市場性および特定目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。



コード内で SQL パススルー クエリを作成するには、次の手順を実行します。

  1. ノースウィンド サンプル データベースを開きます。

  2. 新しいモジュールを作成し、次のコードを入力するか、コピーして貼り付けます。

    Function CreateSPT(SPTQueryName As String, strSQL As String)

    Dim cat As ADOX.Catalog
    Dim cmd As ADODB.Command

    Set cat = New ADOX.Catalog
    Set cmd = New ADODB.Command

    cat.ActiveConnection = CurrentProject.Connection

    Set cmd.ActiveConnection = cat.ActiveConnection

    cmd.CommandText = strSQL
    cmd.Properties("Jet OLEDB:ODBC Pass-Through Statement") = True

    'Modify the following connection string to reference an existing DSN for
    'the sample SQL Server PUBS database.

    cmd.Properties _
    ("Jet OLEDB:Pass Through Query Connect String") = _
    "ODBC;DSN=myDSN;database=pubs;UID=sa;PWD=;"
    cat.Procedures.Append SPTQueryName, cmd

    Set cat = Nothing
    Set cmd = Nothing

    End Function
  3. この関数をテストするには、イミディエイト ウィンドウで次の行を入力し、Enter キーを押します。

    ?CreateSPT("MySptQuery", "Select * from Authors")

関連情報

Microsoft OLE DB プロパティの詳細については、次のマイクロソフト Web サイトの MSDN ライブラリを参照してください。

http://msdn.microsoft.com/library/ja/default.asp上記の MSDN ライブラリの左側にあるコンテンツ ツリーで、次のヘルプ トピックを参照してください。


Win32 および COM 開発
\データアクセスおよびストレージ
\Microsoft Data Access Components (MDAC)
\SDK ドキュメント

\ADO
\Microsoft ActiveX Data Objects (ADO)
\ADO プログラマーズ ガイド

\セクション V: 付録
\付録 A: プロバイダ
\Microsoft OLE DB Provider for Microsoft Jet

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×