LoginSignup
2

More than 5 years have passed since last update.

AccessVBAで直接SQLを叩きたいとき

Last updated at Posted at 2018-10-22

自分用備忘録

内包しているAccessデータベースへの直接アクセスしたいとき

取得

DAOを使用する

レコードセット内のデータ取得は、レコードセットオブジェクト!カラム名 という感じで行う

Private Sub 取得ボタン_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Dim sql As String

    sql = "SELECT ID, 氏名, 電話番号 FROM 従業員マスタ"
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql)

    Do Until rs.EOF

        Debug.Print rs!ID & " " & rs!氏名 & " " & rs!電話番号

        rs.MoveNext
    Loop

    Set rs = Nothing
    Set db = Nothing
End Sub

挿入、更新、削除

戻り値が必要ない場合は、RunSQLを使用できる

挿入、更新時に、都度確認画面が表示されるので、
DoCmd.SetWarnings にてワーニング表示を抑止している。

Private Sub 保存ボタン_Click()

    Dim sql As String
    Dim 数量 As Integer

    数量 = テキスト1.Value


    sql = "INSERT INTO テストテーブル(数量) VALUES (" & 数量 & ");"

    Debug.Print sql

    ' データ挿入
    DoCmd.SetWarnings False
    DoCmd.RunSQL sql
    DoCmd.SetWarnings True

End Sub

補足

Access VBAで " をエスケープするには、 "" と重ねればよい
Access SQLでの日付時刻を扱う際は、 # で囲う。 #2018/10/22 12:34:56# など。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2