投稿者 Zi  (社会人) 投稿日時 2009/10/16 03:09:43
DataGridViewの更新方法で手間取っているので質問に来ました。
データを削除して更新を行おうとすると、クエリ式A=データの数値の構文エラーですとエラーが出てできません。なぜなのでしょうか?

ソースです。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'▼データ取得
SQLCm.CommandText = "SELECT 1列目,2列目,3列目 FROM T_データマスタ"
Adapter.Fill(Table)

'▼値の表示
DataGridView1.DataSource = Table
'▼セルをクリックしたらその行が選択される
DataGridView1.MultiSelect = False
DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

'▼後処理
'Table.Dispose()
'Adapter.Dispose()
'SQLCm.Dispose()
'Cn.Dispose()
End Sub
'▼削除ボタン
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=データフ                 ァイル.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Builder As New OleDbCommandBuilder(Adapter)
Dim Table As New DataTable

Private Sub btn_sakuzyo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_sakuzyo.Click
Dim r As DataGridViewRow
    For Each r In DataGridView1.SelectedRows
        If Not r.IsNewRow Then
        DataGridView1.Rows.Remove(r)
        End If
    Next r
End Sub

Private Sub btn_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_save.Click

Dim Table As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
For Each Row As DataRow In Table.Rows
Dim SQL As String = ""

Select Row.RowState
Case DataRowState.Deleted
'▼削除されたレコードの場合
SQL = "DELETE FROM T_データマスタ WHERE "
SQL &= " 1列目 = " & Row("1列目", DataRowVersion.Original)
Case Else
Continue For
End Select
SQLCm.CommandText = SQL
Try
Cn.Open()
SQLCm.ExecuteNonQuery()←ここでエラーが発生
Cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Next
Table.Dispose()
SQLCm.Dispose()
Cn.Dispose()
End Sub

削除ボタンがエラーを起こしている要因の一つかもという懸念があるので削除ボタンものせておきました。
よろしくお願いします。