如果是空表,下面代码完全正常。只是无法清除全部旧数据With myAdapter .SelectCommand.CommandText = "SELECT * FROM "极限汇总" Try .Fill(myDataSet, "极限汇总") Catch ex As Exception MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK) End Try End With With myDataSet.Tables("极限汇总") '删除原有的所有数据失败 .Rows.Clear() .AcceptChanges()'此代码好像没用,应该是可有可无? End With ’此处为重新填入数据的代码(略) strInsert = "INSERT INTO " & N & "码定期极限汇总 VALUES (@ID," For i As Integer = 3 To 55 strInsert &= "@A" & i & "," Next strInsert = strInsert.Substring(0, Len(strInsert) - 1) & ")" '..................Insert CMD............................. With myAdapter .InsertCommand = New OleDbCommand(strInsert, myConnection) With .InsertCommand.Parameters .Add("@ID", OleDbType.Char, 20, "项目") For i As Integer = 3 To 55 .Add("A@" & i, OleDbType.SmallInt, 6, "P" & i & "期") Next End With End With '''''''''''''''''''Update 字符串'''''''''''''''''''''''' strUpdate = "UPDATE 极限汇总 SET 项目=@ID," For i As Integer = 3 To 55 strUpdate &= "P" & i & "期=@A" & i & "," Next strUpdate = strUpdate.Substring(0, Len(strUpdate) - 1) '................Update CMD.................................. With myAdapter .UpdateCommand = New OleDbCommand(strUpdate, myConnection) With .UpdateCommand.Parameters .Add("@ID", OleDbType.Char, 20, "项目") For i As Integer = 3 To 55 .Add("@" & i, OleDbType.SmallInt, 5, "P" & i & "期") Next End With End With ''''''''''''''Delete 字符串''''''''''''''''''''''''''''''' strDelete = "DELETE FROM 极限汇总 WHRER 项目=@ID" myAdapter.DeleteCommand = New OleDbCommand(strDelete, myConnection) '............Delete CMD................................... Dim IdParm As OleDbParameter = myAdapter.DeleteCommand.Parameters.Add("@ID", OleDbType.Char, 20, "项目") IdParm.SourceVersion = DataRowVersion.Original '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Try myAdapter.Update(myDataSet, "极限汇总") Catch ex As Exception MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK) End Try
With myAdapter .SelectCommand.CommandText = "SELECT * FROM "极限汇总" Try .Fill(myDataSet, "极限汇总") Catch ex As Exception MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK) End Try End With With myDataSet.Tables("极限汇总") '删除原有的所有数据失败 .Rows.Clear() .AcceptChanges()'此代码好像没用,应该是可有可无? End With ’此处为重新填入数据的代码(略) strInsert = "INSERT INTO " & N & "码定期极限汇总 VALUES (@ID," For i As Integer = 3 To 55 strInsert &= "@A" & i & "," Next strInsert = strInsert.Substring(0, Len(strInsert) - 1) & ")" '..................Insert CMD............................. With myAdapter .InsertCommand = New OleDbCommand(strInsert, myConnection) With .InsertCommand.Parameters .Add("@ID", OleDbType.Char, 20, "项目") For i As Integer = 3 To 55 .Add("A@" & i, OleDbType.SmallInt, 6, "P" & i & "期") Next End With End With '''''''''''''''''''Update 字符串'''''''''''''''''''''''' strUpdate = "UPDATE 极限汇总 SET 项目=@ID," For i As Integer = 3 To 55 strUpdate &= "P" & i & "期=@A" & i & "," Next strUpdate = strUpdate.Substring(0, Len(strUpdate) - 1) '................Update CMD.................................. With myAdapter .UpdateCommand = New OleDbCommand(strUpdate, myConnection) With .UpdateCommand.Parameters .Add("@ID", OleDbType.Char, 20, "项目") For i As Integer = 3 To 55 .Add("@" & i, OleDbType.SmallInt, 5, "P" & i & "期") Next End With End With ''''''''''''''Delete 字符串''''''''''''''''''''''''''''''' strDelete = "DELETE FROM 极限汇总 WHRER 项目=@ID" myAdapter.DeleteCommand = New OleDbCommand(strDelete, myConnection) '............Delete CMD................................... Dim IdParm As OleDbParameter = myAdapter.DeleteCommand.Parameters.Add("@ID", OleDbType.Char, 20, "项目") IdParm.SourceVersion = DataRowVersion.Original '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Try myAdapter.Update(myDataSet, "极限汇总") Catch ex As Exception MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK) End Try
1.关于"dataSet.Tables("表名").Rows.Clear" 没有问题,楼主可以测试一下代码. Dim ds As DataSet = New DataSet() Dim dt As DataTable = New DataTable() Dim row As DataRow = dt.NewRow dt.TableName = "TEST" dt.Columns.Add("A") For i As Integer = 0 To 10 row = dt.NewRow row("A") = i dt.Rows.Add(row) Next ds.Tables.Add(dt) ds.Tables("TEST").Rows.Clear() Debug.Print(ds.Tables("TEST").Rows.Count) //0,被清空了. For i As Integer = 0 To 10 row = dt.NewRow row("A") = i dt.Rows.Add(row) Next Debug.Print(ds.Tables("TEST").Rows.Count) //11,重新填充了. 2.关于" .AcceptChanges()'此代码好像没用,应该是可有可无?"当对 DataSet 调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象都将成功结束其编辑。每个 DataRow 的 RowState 属性也会更改;Added 和 Modified 行变为 Unchanged,而 Deleted 行则被移除。
ds.Tables["表名"].Rows.Clear(); //清除所有行
这样就好了
.SelectCommand.CommandText = "SELECT * FROM "极限汇总"
Try
.Fill(myDataSet, "极限汇总")
Catch ex As Exception
MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK)
End Try
End With
With myDataSet.Tables("极限汇总") '删除原有的所有数据失败 .Rows.Clear()
.AcceptChanges()'此代码好像没用,应该是可有可无?
End With ’此处为重新填入数据的代码(略) strInsert = "INSERT INTO " & N & "码定期极限汇总 VALUES (@ID,"
For i As Integer = 3 To 55
strInsert &= "@A" & i & ","
Next
strInsert = strInsert.Substring(0, Len(strInsert) - 1) & ")"
'..................Insert CMD.............................
With myAdapter
.InsertCommand = New OleDbCommand(strInsert, myConnection)
With .InsertCommand.Parameters
.Add("@ID", OleDbType.Char, 20, "项目")
For i As Integer = 3 To 55
.Add("A@" & i, OleDbType.SmallInt, 6, "P" & i & "期")
Next
End With
End With
'''''''''''''''''''Update 字符串''''''''''''''''''''''''
strUpdate = "UPDATE 极限汇总 SET 项目=@ID,"
For i As Integer = 3 To 55
strUpdate &= "P" & i & "期=@A" & i & ","
Next
strUpdate = strUpdate.Substring(0, Len(strUpdate) - 1)
'................Update CMD..................................
With myAdapter
.UpdateCommand = New OleDbCommand(strUpdate, myConnection)
With .UpdateCommand.Parameters
.Add("@ID", OleDbType.Char, 20, "项目")
For i As Integer = 3 To 55
.Add("@" & i, OleDbType.SmallInt, 5, "P" & i & "期")
Next
End With
End With
''''''''''''''Delete 字符串'''''''''''''''''''''''''''''''
strDelete = "DELETE FROM 极限汇总 WHRER 项目=@ID"
myAdapter.DeleteCommand = New OleDbCommand(strDelete, myConnection)
'............Delete CMD...................................
Dim IdParm As OleDbParameter = myAdapter.DeleteCommand.Parameters.Add("@ID", OleDbType.Char, 20, "项目")
IdParm.SourceVersion = DataRowVersion.Original
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Try
myAdapter.Update(myDataSet, "极限汇总")
Catch ex As Exception
MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK)
End Try
.SelectCommand.CommandText = "SELECT * FROM "极限汇总"
Try
.Fill(myDataSet, "极限汇总")
Catch ex As Exception
MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK)
End Try
End With
With myDataSet.Tables("极限汇总") '删除原有的所有数据失败
.Rows.Clear()
.AcceptChanges()'此代码好像没用,应该是可有可无?
End With ’此处为重新填入数据的代码(略) strInsert = "INSERT INTO " & N & "码定期极限汇总 VALUES (@ID,"
For i As Integer = 3 To 55
strInsert &= "@A" & i & ","
Next
strInsert = strInsert.Substring(0, Len(strInsert) - 1) & ")"
'..................Insert CMD.............................
With myAdapter
.InsertCommand = New OleDbCommand(strInsert, myConnection)
With .InsertCommand.Parameters
.Add("@ID", OleDbType.Char, 20, "项目")
For i As Integer = 3 To 55
.Add("A@" & i, OleDbType.SmallInt, 6, "P" & i & "期")
Next
End With
End With
'''''''''''''''''''Update 字符串''''''''''''''''''''''''
strUpdate = "UPDATE 极限汇总 SET 项目=@ID,"
For i As Integer = 3 To 55
strUpdate &= "P" & i & "期=@A" & i & ","
Next
strUpdate = strUpdate.Substring(0, Len(strUpdate) - 1)
'................Update CMD..................................
With myAdapter
.UpdateCommand = New OleDbCommand(strUpdate, myConnection)
With .UpdateCommand.Parameters
.Add("@ID", OleDbType.Char, 20, "项目")
For i As Integer = 3 To 55
.Add("@" & i, OleDbType.SmallInt, 5, "P" & i & "期")
Next
End With
End With
''''''''''''''Delete 字符串'''''''''''''''''''''''''''''''
strDelete = "DELETE FROM 极限汇总 WHRER 项目=@ID"
myAdapter.DeleteCommand = New OleDbCommand(strDelete, myConnection)
'............Delete CMD...................................
Dim IdParm As OleDbParameter = myAdapter.DeleteCommand.Parameters.Add("@ID", OleDbType.Char, 20, "项目")
IdParm.SourceVersion = DataRowVersion.Original
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Try
myAdapter.Update(myDataSet, "极限汇总")
Catch ex As Exception
MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK)
End Try
dataSet.Tables("表名").Clear();
没有问题,楼主可以测试一下代码.
Dim ds As DataSet = New DataSet()
Dim dt As DataTable = New DataTable()
Dim row As DataRow = dt.NewRow
dt.TableName = "TEST"
dt.Columns.Add("A")
For i As Integer = 0 To 10
row = dt.NewRow
row("A") = i
dt.Rows.Add(row)
Next
ds.Tables.Add(dt)
ds.Tables("TEST").Rows.Clear() Debug.Print(ds.Tables("TEST").Rows.Count) //0,被清空了. For i As Integer = 0 To 10
row = dt.NewRow
row("A") = i
dt.Rows.Add(row)
Next Debug.Print(ds.Tables("TEST").Rows.Count) //11,重新填充了.
2.关于" .AcceptChanges()'此代码好像没用,应该是可有可无?"当对 DataSet 调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象都将成功结束其编辑。每个 DataRow 的 RowState 属性也会更改;Added 和 Modified 行变为 Unchanged,而 Deleted 行则被移除。