パススルー クエリを作成する

Access をフロントエンド アプリケーションとして使用し、その後、アプリケーションなどのバック エンド サーバー内のテーブルSQL Server。 既定では、ほとんどのクエリは Access ACE データベース エンジンでローカルに実行されます。 Access では、構文や他の要因に応じて、SQL ServerにリモートでクエリSQL実行できます。 詳細については、JET および ODBC ホワイト ペーパーの「JET データベース エンジン バージョン 3.0: ODBC 接続」を 参照してください

多くの場合、データベース サーバーでクエリを明示的に実行する必要があります。 パフォーマンスを向上させるために、デスクトップ コンピューターよりもデータベース サーバーの処理能力が高く、ネットワーク接続を使用してデータのサブセットを返すことも可能です。 データベース サーバーでクエリを実行するには、ODBC 接続文字列を使用して SQL Server に接続する Transact SQL (TSQL) ステートメントである パススルー クエリ を使用します。 たとえば、SELECT ステートメントを渡して、データシート、フォーム、レポート、またはリスト コントロールにデータを返したり、同等のアクション クエリ (データ操作言語 (DML) ステートメント) を実行したり、ストアド プロシージャを呼び出したり、管理タスク (データ定義言語 (DDL) ステートメント) を実行したりすることができます。

    パススルー クエリの結果は読み取り専用です。 データシートまたはフォームのデータを直接編集するには、インデックス付きビューへのリンク テーブルを作成します。 詳細については、「インデックス付きビュー を作成する」を参照してください

  1. サーバー データベースに接続します。

    SQL Server へのリンクの詳細については 、「SQL Server データベースのデータをインポートまたはリンクする」および 「AzureSQL Server データベースにデータをリンクまたはインポートする」を参照してください。

  2. [作成]、[クエリ デザイン] の順に選択します。

  3. 必要に応じて、[テーブルの 追加] ダイアログ ボックス([テーブル をテーブルに表示] タブ) Access 2013。

  4. [ デザイン] >を選択します

    クエリ デザイン グリッドが非表示にされ、[ビュー] SQL表示されます

  5. クエリ プロパティ シートが表示されない場合は、F4 キーを押して表示します。

  6. プロパティ シートで 、[ODBC Connect Str] プロパティ ボックスをクリックし、次のいずれかの操作を行います。

    接続文字列を取得するには、次の方法を実行します。

    1. ナビゲーション ウィンドウで、目的のデータ ソースにリンクされているテーブルを右クリックし、[リンク テーブル マネージャー] を選択します

    2. [リンク テーブル マネージャー] ダイアログ ボックスで、データ ソースのチェック ボックスをオンにし、[編集] を選択 します

    3. [リンク の編集] ダイアログ ボックスで、[接続文字列] ボックスのテキスト をコピー します。

    1. [ビルド 設定] を [ビルダー] ボタン

    2. 指示に従って、接続文字列情報を含む DSN ファイルを作成します。 詳細な手順については、「SQL Server データベースのデータをインポートまたはリンクする」および「Azure SQL Server データベースにデータをリンクまたはインポートする」を参照してください

    DSN ファイル接続を作成すると、ODBC 接続文字列が Access データベースに内部的に保存されます。 次に、その文字列のコピーを取得する方法を示します。

    1. 目的の ODBC 接続を使用して、ナビゲーション ウィンドウでリンク テーブル名を見つける。

    2. Ctrl キーを押しながら G キーを押します。 を選択して VBA イミディエイト ウィンドウを開きます。

    3. 次のコードを入力します。

      ?CurrentDb.TableDefs("<table name>").Connect

      ただし、手順 a <テーブル名>テーブル名に置き換える。

    4. ODBC Connect Str プロパティに返 される文字列をコピー します。

  7. ビューでクエリ をSQLします

       Access と TSQL の間にはSQLとSQL Server、特に構文、関数名、関数の引数には重要な違いがあります。 詳細については、「Access SQL と SQL Server TSQL の比較」を参照してください。

    ヒント    最初に TSQL クエリSQL Server Management Studioし、ビューにコピーしてSQL貼 SQLします。 これにより、クエリに正しい構文が設定されます。 SQL Server データベースに簡単にアクセスできない場合は、最大 10 GB をサポートする Microsoft SQL Server Express edition をデスクトップにインストールし、移行を実行して確認する無料で簡単な方法を検討してください。

  8. その他の関連プロパティの設定を検討してください。

    • レコードを返します。     一SQLステートメントでは、SELECT などのレコードが返され、UPDATE など、返されないレコードがあります。 クエリがレコードを返す場合は、このプロパティを [はい] に 設定します。クエリがレコードを返しない場合は、このプロパティを [いいえ] に 設定します

          パススルー クエリは複数の結果セットを返す場合がありますが、データシート、フォーム、レポート、またはレコードセット変数では、最初の結果セットだけが使用されます。 複数の結果セットを取得するには、次の例 に示すようにテーブル 作成クエリを使用します。

      SELECT <pass-through query name>.*
      INTO <local table name>
      FROM < pass-through query name >

      各結果セットの列が異なっている可能性がある場合は、アスタリスク (*) を使用する必要があります。 各結果セットは個別のテーブルに保存され、数値はローカル テーブル名に追加されます。 たとえば、3 つの結果セットが返される場合、テーブル名は <ローカル テーブル名>、<ローカル テーブル名>1、<ローカル テーブル名>2 のようになります。

    • ログ メッセージ    Access メッセージ テーブルのデータベースからメッセージSQL返すかどうかを指定します。 テーブル名の形式は "username – nn" で、ユーザー名は現在のユーザーのサインイン名で、nn は 00 から始まる数字です。

    • ODBC タイムアウト    クエリの実行時にタイム アウト エラーが発生するまでの待機時間を指定します。 既定値は 60 秒です。 ネットワーク トラフィックやデータベース サーバーの使用が多く、遅延が発生する可能性があります。

    • 最大レコード数    返すレコードの最大数を指定します。 システム リソースが限られている場合や、少量のデータで結果をテストしたい場合があります。

  9. クエリの入力が完了したら、[実行] の [ デザイン ] > 選択します。 クエリが処理のためにデータベース サーバーに送信されます。

関連項目

Transact-SQL 参照

Transact-SQLhttps://mva.microsoft.com/en-US/training-courses/querying-with-transactsql-10530?l=TjT07f87_9804984382

ヘルプを表示

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

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

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

フィードバックをお送りいただきありがとうございます!

×