ボタンを押してADOでSQL発行してテーブルを更新してみよう

MSACCESS_eyecatch
SBMJOB

ボタンを押すとADOでSQLを発行してテーブルを更新する仕組みを作ってみます。更新・削除系のSQLなら物凄く簡単に処理できます。

目次

スポンサーリンク

画面設計と概要

売上テーブルの各レコードを更新するサンプルプログラムです。実務の場合はバッチ処理か売上入力時の対話型のトランザクション内で処理されるべき処理となります。

なお画面上にはレコードのIDを表示されており、売上レコードが一つだけ表示されていますが、サンプルコードでは売上テーブルの前レコードを一括で更新します。(学習用なのでご容赦ください)

サンプルコードでは、コマンド28「全レコード売上金額を計算セット」、コマンド29「全レコード売上金額0セット」をSQLで処理しています。

サンプルコード

Private Sub コマンド23_Click()

    Dim args As String
     
    If IsNull(Me.txt_ID) = False Then
        args = Me.txt_ID
    End If
     
    DoCmd.OpenForm "f_売上_個別入力", acNormal, , "ID =" & Me.txt_ID, , acDialog, args
    
End Sub

Private Sub コマンド27_Click()
    DoCmd.Close acForm, Me.Name
End Sub

Private Sub コマンド28_Click()
    Dim ct As New ADODB.Connection
    Dim stSQL As String
    
    Set ct = CurrentProject.Connection
    strSQL = "update t_売上 set 売上金額= 数量*単価"
    strSQL = strSQL & ";"
    
    ct.Execute strSQL
    
    Set ct = Nothing
    
    DoCmd.Requery
End Sub

Private Sub コマンド29_Click()

    Dim ct As New ADODB.Connection
    Dim stSQL As String
    
    Set ct = CurrentProject.Connection
    strSQL = "update t_売上 set 売上金額= 0"
    strSQL = strSQL & ";"
    
    ct.Execute strSQL
    
    Set ct = Nothing
    
    DoCmd.Requery

End Sub

Private Sub コマンド30_Click()
    On Error Resume Next

    DoCmd.GoToRecord acDataForm, "f_売上", acNext
End Sub

Private Sub コマンド31_Click()
    On Error Resume Next

    DoCmd.GoToRecord acDataForm, "f_売上", acPrevious
End Sub

解説

Private Sub コマンド28_Click()
    Dim ct As New ADODB.Connection
    Dim stSQL As String
    
    Set ct = CurrentProject.Connection  '①
    strSQL = "update t_売上 set 売上金額= 数量*単価"  '②
    strSQL = strSQL & ";"
    
    ct.Execute strSQL  '③
    
    Set ct = Nothing
    
    DoCmd.Requery
End Sub

特に難しいことはなく、①でコネクションを作成②でSQL文を作成③でSQLを実行しているだけです。

SQL文自体で処理を完結させるならとても簡単に処理できるはいいですね。Update Delete系のSQLだとレコードセットを使う必要がないのでこのような記述となります。

比較

上記の記事はSQLを発行して読み込んだレコードセットを一行ずつ舐めて処理していますが、今記事では舐める処理はしていないので完結な記述で処理が完結します。

スポンサーリンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

システム開発SE・アプリ開発・デバッガー等々なんでもやる猫の下僕です。現在は凶暴猫にカタカタ動く手を狙われながらキーボードを打っています。かなりゆるい性格なのでコメントやメッセージお気軽に〜お仕事のご依頼もお気軽にぃ〜

スポンサーリンク

コメント

コメントする

CAPTCHA


目次