代码如下:
Private Sub Command13_Click()
Dim k As Integer
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockOptimistic
Rs.Source = "SELECT * FROM channel WHERE departmentid=" & strDepID & "OR departmentid='001001001'"
Rs.ActiveConnection = Cn
Rs.Open
For k = 1 To FlexGrid1.Row
If Not Rs.EOF Then
If FlexGrid1.TextMatrix(k, 1) = "√" Then
Rs.Fields("departmentid") = strDepID 'strDepID已获取
ElseIf FlexGrid1.TextMatrix(k, 1) = "" Then
Rs.Fields("departmentid") = "001001001"
End If
Rs.MoveNext
End If
Next k
Rs.Update
Rs.Close
Set Rs = Nothing
End Sub当我在表格中只修改其中一条记录时,若是该记录在表格中的最下一行,则update会报错。若是非最后一行,则正常。
百思不得其解,是不是循环出了问题。大家帮忙看看!
Private Sub Command13_Click()
Dim k As Integer
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockOptimistic
Rs.Source = "SELECT * FROM channel WHERE departmentid=" & strDepID & "OR departmentid='001001001'"
Rs.ActiveConnection = Cn
Rs.Open
For k = 1 To FlexGrid1.Row
If Not Rs.EOF Then
If FlexGrid1.TextMatrix(k, 1) = "√" Then
Rs.Fields("departmentid") = strDepID 'strDepID已获取
ElseIf FlexGrid1.TextMatrix(k, 1) = "" Then
Rs.Fields("departmentid") = "001001001"
End If
Rs.MoveNext
End If
Next k
Rs.Update
Rs.Close
Set Rs = Nothing
End Sub当我在表格中只修改其中一条记录时,若是该记录在表格中的最下一行,则update会报错。若是非最后一行,则正常。
百思不得其解,是不是循环出了问题。大家帮忙看看!
呵呵。谢谢楼上的兄弟。
我搞定了。
把Rs.Update 替换成Rs.UpdateBatch就行了
:)