本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[ACC2]モジュールで既存のクエリーの SQL 文を変更する方法

文書番号: 403937

最終更新日: 1997/11/01


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP403937

概要

モジュールから既存のクエリーの SQL 文を変更するサンプル プロシージャを紹介します。

現象

Access 2.0 の場合は、サンプル データベース NWIND.MDB の [社員リスト] クエリー、Access 1.1 の場合は、サンプル データベース MINAMI.MDB の [Q_得意先リスト] クエリーを元にして、 SQL 文を変更します。

■プロシージャの作成 ( Access 2.0 の場合)

  1. データベース ウィンドウで [ファイル] - [新規] - [モジュール] コマンドを選択するか、データベース ウィンドウの <モジュール> ボタンをクリックし、<新規作成>ボタンをクリックします。
  2. [編集] - [新規プロシージャ] コマンドを選択するか、ツールバーの <プロシージャ作成> ボタンをクリックします。
  3. [プロシージャの新規作成] ダイアログ ボックスの [種類] で"Function"を選択します。[名前] でプロシージャ名 (ChangeSQL) を入力します。
  4. 以下のサンプルプロシージャを入力します。

■サンプル プロシージャ ( Access 2.0 の場合)

Access 2.0 では、QueryDefs コレクションを使用します。QueryDefs オブジェクトの[SQL] プロパティに変更する SQL 文を設定します。変更内容は、 WHERE 句で[社員コード] が 200 以上、299 以内とする抽出条件を設定し、[社員] テーブルのすべてのフィールドを表示します。
右端の_(アンダースコア) のある行は、_(アンダースコア) を消して、その行に継続して次の行を入力してください。
  -----------------------------------------------------------------------------
  Function ChangeSQL ()
    Dim MyDB As Database
    Dim MyQuery As QueryDef
    Set MyDB = DBEngine.Workspaces(0).Databases(0)
          ' QueryDef オブジェクトを編集のために開きます。
    Set MyQuery = MyDB.QueryDefs("社員リスト")
          ' SQL 文を変更します。
    MyQuery.SQL = "SELECT * FROM 社員 WHERE [社員コード]>=200 and  _
     [社員コード]<=299;"
          ' 更新したクエリーを実行します。
    DoCmd クエリーを開く "社員リスト"
  End Function
  -----------------------------------------------------------------------------

■プロシージャの作成 ( Access 1.1 の場合)

  1. データベース ウィンドウで [ファイル] - [新規] - [モジュール] コマンドを選択するか、データベース ウィンドウの <モジュール> ボタンをクリックし、<新規作成>ボタンをクリックします。
  2. [編集] - [新規プロシージャ] コマンドを選択します。
  3. [プロシージャの新規作成] ダイアログ ボックスの [種類] で"Function"を選択します。[名前] でプロシージャ名 (ChangeSQL) を入力します。

■ サンプル プロシージャ ( Access 1.1 の場合)

Access 1.1 では、QueryDef 変数を 使用します。QueryDef 変数の [SQL] プロパティに変更する SQL 文を設定します。変更内容は、 WHERE 句で [得意先コード] が 0030 以上とする抽出条件を設定し、[得意先] テーブルのすべてのフィールドを表示します。
  -----------------------------------------------------------------------------
  Function ChangeSQL ()
    Dim MyDB As Database
    Dim MyQuery As QueryDef
    Set MyDB = CurrentDB()
          ' QueryDef 変数を編集のために開きます。
    Set MyQuery = MyDB.OpenQueryDef("Q_得意先リスト")
          ' SQL 文を変更します。
    MyQuery.SQL = "SELECT * FROM 得意先 WHERE [得意先コード]>= 0030;"
          ' 更新したクエリーを実行します。
    DoCmd クエリーを開く " Q_得意先リスト"
  End Function
  -----------------------------------------------------------------------------

■ サンプル プロシージャの実行

モジュール ウィンドウで、Access 2.0 は [表示] - [イミディエイト ウィンドウの表示] コマンドを選択するか、ツール バーの <イミディエイト ウィンドウ> ボタンをクリックします。Access 1.1 は [表示] - [イミディエイト ウィンドウ] コマンドを選択します。
イミディエイト ウィンドウに「? ChangeSQL( ) 」と入力し、Enter キーを押すとクエリーが実行され SQL 文で設定したレコードセットが表示されます。

■ 追加

複数の抽出条件がそれぞれ変数にある場合、条件を連結するには、 & 演算子を使用します。
  X = " [社員コード] = 101"
  Y = " [社員コード] = 201"
MyQuery.SQL = "SELECT * FROM 社員 WHERE " & X & "OR" & Y ";"

■ 補足

本文に関する詳細は、次の参照先をご参照ください。
  • Access 1.1
    『 Microsoft Access Access Basic プログラミング ガイド』
           既存のクエリーの修正....................................P170
    『 Microsoft Access リファレンス』
           SQL プロパティ..........................................P255 ~ P256
    
  • Access 2.0
    『オンラインヘルプ』
           「 QueryDef オブジェクト、QueryDefs コレクション」
           「 [SQL] プロパティ」
    『 Microsoft Access リファレンス』
           「 QueryDef オブジェクト、QueryDefs コレクション」......P948 ~ P949
           「 [SQL] プロパティ」....................................P975 ~ P976
    

Keywords: KBHOWTO KB403937
Technology: kbAccess200 kbAccessSearch

inserted by FC2 system