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

ADOとADOXを組み合わせ、SQLで新規クエリを作成し実行する方法 : VBAのTips解説



SELECT 〜 FROM 構文

SELECT 〜 FROM 構文とは、FROMで指定したテーブルから、SELECTで指定したフィールドを選択するSQL構文です。SELECTに指定するフィールド数は、1つでも複数でも問題ありません。表示するフィールドの順番は、SELECT以降で指定する順番になります。FROMはSELECTと同様に複数のテーブルを指定することもできます。Accessでデータを選択する「選択クエリー」がクエリーの基礎であるように、SQLではSELECT 〜 FROM 構文が基本になります。なお、プロシージャ内でSQLを実行するには、DAO、ADOともにExecuteメソッドを用いますが、選択クエリーの場合はエラーが発生します。よって、SELECT 〜 FROMを用いたSQLの場合は、RunSQLメソッド、OpenQueryメソッドを利用します。なお、Accessのプロシージャ内であれば、末尾のセミコロン(;)を省略することもできます。

  • 書式

SELECT fieldname FROM tablename

  • 引数
引数 意味 指定
fieldname フィールド名を指定します。複数の場合は、カンマ(,)で区切ります。 *を指定すると全フィールドを指定します 省略不可
tablename テーブル名を指定します 省略不可

関連項目

  1. CurrentDb(DAO)
  2. CreateQueryDefメソッド(DAO)
  3. Deleteメソッド(DAO、ADO)
  4. ActiveConnectionメソッド(ADO)
  5. Connectionオブジェクト(ADO)
  6. Appendメソッド(ADO)

事例 ) ADO、ADOXを用いて新規クエリーを作成し、そのクエリーを実行する

ADO、ADOXを用いて「請求情報リスト」クエリーを作成し、そのクエリーを実行します。

  1. 非連結フォームを作成します。
  2. 実行するコマンドボタンを作成します。

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

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

Private Sub 実行_Click()

   On Error GoTo エラー

   Dim cat As New ADOX.Catalog
   Dim cmd As New ADODB.Command
   Dim mySQL As String
   Dim strName As String

   cat.ActiveConnection = CurrentProject.Connection
   strName = "Q_生徒管理"

   mySQL = "SELECT 生徒管理.* FROM 生徒管理 "
   mySQL = mySQL & "WHERE 性別 ='女性';" '--- A

   cmd.CommandText = mySQL
   cat.Views.Append strName, cmd

   DoCmd.OpenQuery strName '--- B

   db.Close: Set db = Nothing

   Exit Sub

エラー:

   If Err.Number = -2147217816 Then '--- C
      cat.Views.Delete strName
      Resume
   Else
      MsgBox Err.Number & " : " & Err.Description
   End If

End Sub
解説
  1. 女性だけを抽出するSQLを作成します。
  2. クエリーを実行します。
  3. 同名のクエリが既に存在している場合は削除します。

動作確認

  1. フォームをビューモードで開きます。
  2. [実行] ボタンをクリックします。

  1. 女性だけを抽出したクエリーが作成され、そのクエリーが開きます。

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

 


ADOとADOXを組み合わせ、SQLで新規クエリを作成し実行する方法 : VBAのTips解説


 

-Microsoft Access Club-

年額2,400円でドメインネームサーバーをご用意します。自宅サーバ構築時にご利用下さい。自宅サーバーは応用範囲が広いです。
年額2,400円でドメインネームサーバー。
自社・自宅サーバ構築時にご利用下さい。
やはり、自前サーバーは応用範囲が広いです。