Microsoft Access Club >VBAのTips解説 >このページ >次頁 < 前項  サイト内検索
 

DAOを用いてクエリーを新しく作成する方法 : VBAのTips解説



CreateQueryDefメソッド

CreateQueryDefメソッドとは、新しいクエリを作成するメソッドです。実行するだけで、自動的にコレクションに追加(新規作成)されます。なお、クエリー名を空白("")にすると、一時的な処理を行うクエリが作成されます。作成したクエリーは、Executeメソッドで実行できます。また、コレクションからの削除は、Deleteメソッドで行います。

  • 書式
Set querydef = object.CreateQueryDef (name, sqltext)
  • 引数
引数 意味 指定
querydef QueryDef型で宣言したオブジェクト変数を指定します 省略不可
object Database型で宣言したオブジェクト変数を指定します 省略不可
name 作成するクエリ名を文字列で指定します 省略可。省略すると、一時的なクエリが作成され保存はできません
sqltext クエリの内容をSQLで指定します 省略可。後に定義することが可能です

関連項目

CreateTableDefメソッド(DAO)

事例 ) SQLを用いてテーブルフィールド(Yes/No型)の一括更新を行う

SQLを用いてテーブルフィールド(Yes/No型)の一括更新を行います。

  1. テーブルを作成します。
  2. ID、取引先、入金額、チェックボックスフィールドを作成します。
  3. 連結フォームを作成します。
  4. ID、取引先、入金額、チェックボックステキストボックスを作成します。
  5. 実行するコマンドボタンを新規作成します。
  6. 非連結のチェックボックスを新規作成します。

コマンドボタンクリック時イベントプロシージャの作成

コマンドボタンクリック時イベントプロシージャを以下のように作成します。

Private Sub 実行_Click()

   On Error GoTo エラー

   Dim db As DAO.Database, qdf As DAO.QueryDef
   Dim mySQL As String

   Set db = CurrentDb

   If Me.chkチェック = False Then
      mySQL = "UPDATE 取引先入金状況 SET 入金済み = True "
      mySQL = mySQL & "WHERE Not 入金額 Is Null;"
   Else
      mySQL = "UPDATE 取引先入金状況 SET 入金済み = False;"
   End If

   Set qdf = db.CreateQueryDef("", mySQL) '--- A
   qdf.Execute '--- B

   Me.chk入金済み.Requery
   db.Close: Set db = Nothing

   Exit Sub

エラー:

   MsgBox Err.Number & " : " & Err.Description

End Sub
解説
  1. テーブルレコードの更新処理を行うので、実際のクエリを作成する必要がありません。よって、クエリ名を指定しません。
  2. Executeメソッドを用いてmySQLを実行します。

動作確認

  1. フォームをビューモードで開きます。

  1. 実行前の表形式フォーム上のテーブルレコードです。
  2. [入金済みチェック] ボタンをクリックすると、入金済フィールドのチェックボックがTrueに切り替わります。

ページの先頭へ 前ページへ戻る


DAOを用いてクエリーを新しく作成する方法 : VBAのTips解説


 

-Microsoft Access Club-

cPanel あるいは PLESKコントロールパネルをインストールした専用レンタルサーバのディスカウントプランを期間限定で公開しています。
cPanel・PLESKコントロールパネルを備えた専用レンタルサーバ....。