|
说明:
1、下面内容是查询某条数据后删除功能的部分语语句,经反复排除后感觉是For语句有最大值限制?将Rs.RecordCount改成30000后不报错,改成35000后报同样的错误,现查询的表中有记录将近4万条,不明白!
2、此功能在以前制作时没有问题,所以怀疑是使用一段时间后数据量增加造成的。
3、同一窗体中还有另一查询删除功能也使用了相同结构语句,没有问题,可正常操作,该查询的表中有记录200多条。
On Error GoTo Err_DeleteB_Click
Dim STemp As String
Dim i As Integer
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
STemp = "Select * From tblWorkers"
Rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If Rs.RecordCount < 1 Then
Exit Sub
End If
Rs.MoveFirst
For i = 1 To Rs.RecordCount ’将Rs.RecordCount改成30000后不报错,改成35000后报同样的错误,现查询的表中有记录将近4万条,不明白!
If 。。。 Then
Rs.Delete 1
Exit For
Else
Rs.MoveNext
End If
Next i
MsgBox "成功!", vbOKOnly, "提示"
Me![Q_FrmC_Subform].Requery ’刷新??
Set Rs = Nothing
Exit_DeleteB_Click:
Set Rs = Nothing
Exit Sub
Err_DeleteB_Click:
MsgBox Err.Description
Resume Exit_DeleteB_Click
另外,如果确定要删除的记录肯定是更接近于表的底部,那么从下面循环查询应该更快捷吧,不过貌似有点问题,也顺便请教了吧,谢谢!
rs.movelast
For i = Rs.RecordCount To 1 Step -1
If 。。。 Then
Rs.Delete 1
Exit For
Else
Rs.MovePrevious
End If
Next i
谢谢! |
|