SQL構文に慣れれば自分で処理した方が効率がよいです。
たとえば
Private Sub dt入荷先Update()
Dim flgデータ更新 As Boolean = False
SqlCommand = New OleDb.OleDbCommand("UPDATE 入荷先 SET 入荷先 = @入荷先 WHERE (入荷先C = @入荷先C)")
'更新している行だけ更新用のSQLを発行する
For Each dt入荷先Row As DataRow In dt入荷先.Rows
'更新されているかな?
If dt入荷先Row.RowState = DataRowState.Modified Then
SqlCommand.Parameters.Clear()
SqlCommand.Parameters.Add("@入荷先", OleDb.OleDbType.Char)
SqlCommand.Parameters.Add("@入荷先C", OleDb.OleDbType.Char)
'なにも入力されていなければNullにする
If dt入荷先Row.Item(1, DataRowVersion.Current).ToString.Length = 0 Then
SqlCommand.Parameters("@入荷先").Value = System.DBNull.Value
Else
SqlCommand.Parameters("@入荷先").Value = dt入荷先Row.Item(1, DataRowVersion.Current).ToString
End If
SqlCommand.Parameters("@入荷先C").Value = dt入荷先Row.Item(0).ToString
db.ExecuteSqlCommandNonQuery(SqlCommand)
flgデータ更新 = True
End If
Next
If flgデータ更新 Then
MsgBox("データ更新が終了しました。", MsgBoxStyle.Information, "")
Else
MsgBox("更新されたデータがありませんでした。", MsgBoxStyle.Information, "")
End If
End Sub
な感じです。このやり方だと複数のテーブルを結合したレコードの更新もできます。
各々のテーブルに対して更新SQL文を書く必要がありますが...
そのときはちゃんとトランザクションを使いましょう。