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

ADOとSQLを用いて新規テーブルを作成する方法 : VBAのTips解説



SELECT 〜 INTO 〜 FROM 構文

SELECT 〜 INTO 〜 FROM 構文とは、FROMで指定したテーブルから、SELECTで指定したフィールドを持つ、INTOで指定したテーブル名で新しいテーブルを作成するSQL構文です。SELECTに指定するフィールド数は、1つでも複数でも問題ありません。表示するフィールドの順番は、ここで指定する順番になります。INTOには、新しいテーブル名を記述します。FROMはSELECTと同様に複数のテーブルを指定することもできます。Accessで新しいテーブルを作成する「テーブル作成クエリー」と機能的には同じです。なお、テーブル作成を安易に実行するとデータベース管理に影響があるので、IFステートメントとMsgboxステートメントを用いて、ユーザーに処理を選択させる機能を付加します。

  • 書式

SELECT fieldname INTO newtablename FROM tablename

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

関連項目

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

事例 ) ADOを用いてテーブルを新規作成する

ADOを用いて、「ガソリン管理」テーブルから月別集計テーブルを新規作成します。

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

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

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

Private Sub 実行_Click()

   On Error GoTo エラー

   Dim cn As New ADODB.Connection
   Dim cmd As New ADODB.Command
   Dim mySQL As String
   Dim strName As String

   Set cn = CurrentProject.Connection '--- A
   strName = "月別ガソリン使用量"

   mySQL = "SELECT DISTINCTROW Format([日付],'yyyy/mm') AS 月別, "
   mySQL = mySQL & "Sum(Format([使用量],'0.0')) & _
           ' リットル' AS 合計 INTO [" & strName & "] "
   mySQL = mySQL & "FROM ガソリン管理 "
   mySQL = mySQL & "GROUP BY Format(ガソリン管理.日付,'yyyy/mm');"

   cmd.ActiveConnection = cn
   cmd.CommandText = mySQL

   If MsgBox(strName & " テーブルを作成します。", vbYesNo) = vbYes Then
      cmd.Execute mySQL
      MsgBox strName & " テーブルを作成しました。"
   End If

   Set cn = Nothing

   Exit Sub

エラー:

   If Err.Number = -2147217900 Then
      DoCmd.DeleteObject acTable, strName '--- B
      Resume
   Else
     MsgBox Err.Number & " : " & Err.Description
  End If

End Sub
解説
  1. カレント データベースへの参照を取得します。
  2. 同名のテーブルが既に存在していれば、DeleteObjectメソッドで削除します。

動作確認

  1. フォームをビューモードで開きます。
  2. [実行] ボタンをクリックします。
  1. 月別にガソリン使用量を集計したテーブルが作成されます。

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

 


ADOとSQLを用いて新規テーブルを作成する方法 : VBAのTips解説


 

-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。