Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

アクションクエリの作成と実行 - 追加クエリ - 値の追加 : SQL入門講座



登録しているテーブルレコードに新たにレコードを追加するクエリを追加クエリと呼びます。その中でも、値を追加するクエリを取り上げます。

INSERT INTO 〜 VALUES 〜 構文

INSERT INTO 〜 VALUES 〜 構文とは、INSERT INTO句で指定したテーブルの各フィールドに、VALUES句で指定したデータを追加するSQL構文です。

  1. INSERT INTO句で指定したフィールドとVALUES句で指定したデータとは対になります。
  2. INSERT INTO句に指定するテーブル、フィールドは、テーブル名(フィールド名1、フィールド名2、…)の形式で指定します。
  3. VALUES句に指定するデータは、(データ1、データ2、…)の形式で指定します。
  4. VALUES句に記述する際、追加するデータがテキスト型であればダブルコーテーション("")、日付/時刻型ならシャープ(#)で囲みます。
  5. SQLをプロシージャ内で使用する場合、SQL自体をダブルコーテーション("")で囲みますので、引数adddata がテキスト型である場合、ダブルコーテーション("")ではなくシングルコーテーション(')で囲みます。
  6. INSERT INTO句に、複数のテーブルを指定することはできません。
サンプルテーブル

サンプルテーブル(生徒管理)は以下のものを予定しています。

ID 生徒名 性別
1 松永 良子 女性
2 田口 きさよ 女性
3 鈴木 真一 男性
4 佐藤 信二 男性
構文
INSERT INTO tablename (field1,field2,…) VALUES (add1、add2、…)
引数 意味 指定
tablename テーブル名を指定します。 省略不可
field フィールド名を指定します。複数の場合は、カンマ(,)で区切ります。 省略可(オートナンバー型フィールドに追加する場合のみ省略できます)  省略すると、オートナンバー型フィールドには番号が割り当てられます。
add 追加するデータを指定します。 省略可(オートナンバー型フィールドに追加する場合のみ省略できます)  省略すると、オートナンバー型フィールドには番号が割り当てられます。
サンプル構文

「生徒管理」テーブルに新規レコードを追加します。IDフィールドはオートナンバー型なので自動で取得します。「生徒名」、「性別」フィールドにValue句を用いて田中 恵子、女性を追加します。

  • INSERT INTO 生徒管理(生徒名,性別) VALUES ("田中 恵子","女性")

「生徒管理」テーブルに新規レコードを追加します。追加方法としては、Inputboxを用いてユーザーに入力を促します。このような場合、ユーザーが入力した値(Inputboxの戻り値)を変数で受け取るのが一般的です。よって、SQL構文内で変数を使用しています。

    mySQL = "INSERT INTO " & strTableName & " (生徒名,性別) "
    mySQL = mySQL & "VALUES('" & varName & "', '" & varSex & "');"

ADOを用いた事例

ADOのExcuteメソッドを用いてSQLを実行します。

Sub InsertIntoValues()

On Error GoTo エラー
                
    Dim cn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim mySQL As String
    
    Set cn = CurrentProject.Connection 'カレントデータベースに関連付けます。
    
    mySQL = "INSERT INTO 生徒管理(生徒名,性別) VALUES ('田中 恵子','女性');"
    cmd.ActiveConnection = cn
    cmd.CommandText = mySQL
    
    If MsgBox("レコードを追加します。", vbYesNo) = vbYes Then
        cmd.Execute mySQL
        MsgBox "レコードを追加しました。"
    End If
                            
    cn.Close: Set cn = Nothing
    
    Exit Sub

エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub
    
End Sub
結果

テーブルに以下のようにレコードが追加されます。

RunSQLメソッドを用いた事例

RunSQLメソッドを用いてSQLを実行します。InputBoxを用いて、ユーザーに「生徒名」「性別」を入力させます。

Sub InsertIntoValues()

On Error GoTo エラー
                
    Dim varName As Variant
    Dim varSex As Variant
    Dim strTableName As String
    Dim mySQL As String
    Dim strMsg As String
        
    varName = InputBox("生徒名を入力して下さい。")
    varSex = InputBox("性別を入力して下さい。")
    strTableName = "生徒管理"
    
    If varName = "" Or varSex = "" Then
        MsgBox "入力漏れです。処理を中止します。"
        End
    End If
    
    mySQL = "INSERT INTO " & strTableName & " (生徒名,性別) "
    mySQL = mySQL & "VALUES('" & varName & "', '" & varSex & "');"
    
    strMsg = "生徒名 : " & varName & vbNewLine & _
             "性別 : " & varSex & vbNewLine & _
             "追加しますか。"
        
    If MsgBox(strMsg, vbYesNo) = vbYes Then
        DoCmd.SetWarnings False
        DoCmd.RunSQL mySQL
        MsgBox "処理が完了しました。"
        DoCmd.SetWarnings True
    End If
                                
Exit Sub

エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub
    
End Sub
留意点
  1. 変数をSQLに用いているので、 アンパサンド(&)で接続する必要があります。
  2. Excuteメソッドを実行すると、Access既定の警告メッセージは表示されません。
  3. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
結果
  1. プロシージャを実行すると、下記のようにInputBoxダイアログが開きます。

  1. テーブルレコードには、下記のようにレコードが追加されています。

追加クエリ

VALUES句でレコードを追加する方法は、Accessオブジェクトのクエリには存在しません。

2004/08/17

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

 


アクションクエリの作成と実行 - 追加クエリ - 値の追加 : SQL入門講座


-Microsoft Access Club-

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