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文を書く必要がありますが...
そのときはちゃんとトランザクションを使いましょう。