我需要通过移动到记录集中的下一条记录来遍历表单。
我正在使用Form_Current事件来循环。 我使用了几个陈述并且有不同的结果。
这个有时崩溃并给出错误消息:“你不能去指定的记录。”
DoCmd.GoToRecord , , acNext
这个只有72个记录并停止。
DoCmd.RunCommand acCmdRecordsGoToNext
这个只有129个记录并停止。
Me.Recordset.MoveNext
尝试查找将转到下一条记录的指令,直到它到达文件结尾。 我使用Access 2010(Access 2002 -2003文件格式mdb)作为前端。记录源是SQL Server 2008链接的视图。
答案 0 :(得分:8)
从当前记录循环到结束:
While Me.CurrentRecord < Me.Recordset.RecordCount
' ... do something to current record
' ...
DoCmd.GoToRecord Record:=acNext
Wend
检查是否可以转到下一条记录:
If Me.CurrentRecord < Me.Recordset.RecordCount Then
' ...
End If
答案 1 :(得分:3)
If (Not IsNull(Me.id.Value)) Then
DoCmd.GoToRecord , , acNext
End If
您好, 你需要把它放在激活形式,并有一个名为id ...的id字段
这种方式直到它到达没有id的那个(AKA新的)......
答案 2 :(得分:3)
我过去做过这个,并且一直使用它:
With Me.RecordsetClone
.MoveFirst
Do Until .EOF
If Me.Dirty Then
Me.Dirty = False
End If
.MoveNext
Me.Bookmark = .Bookmark
Loop
End With
有些人会使用表单的Recordset,它不需要设置书签(即,导航表单的Recordset自动导航表单的编辑缓冲区,因此用户立即看到移动),但我更喜欢RecordsetClone的间接
答案 3 :(得分:2)
Set rs = me.RecordsetClone
rs.Bookmark = me.Bookmark
Do
rs.movenext
Loop until rs.eof
答案 4 :(得分:1)
使代码保持简单永远是我的建议:
If IsNull(Me.Id) = True Then
DoCmd.GoToRecord , , acNext
Else
DoCmd.GoToRecord , , acLast
End If
答案 5 :(得分:0)
如果您希望cmd按钮在表单记录中循环,请尝试将此代码添加到cmdNext_Click
和cmdPrevious_Click
VBA中。
我发现它很好用,并且可以解决BOF / EOF问题:
On Error Resume Next
DoCmd.GoToRecord , , acNext
On Error Goto 0
On Error Resume Next
DoCmd.GoToRecord , , acPrevious
On Error Goto 0
祝你好运! PT
答案 6 :(得分:-1)
在表单关闭事件上添加此代码无论您是添加新记录还是删除,它都会从1到最后一条记录重新创建主键。此代码不会干扰表的其他列。
Sub updatePrimaryKeysOnFormClose()
Dim i, rcount As Integer
'Declare some object variables
Dim dbLib As Database
Dim rsTable1 As Recordset
'Set dbLib to the current database (i.e. LIBRARY)
Set dbLib = CurrentDb
'Open a recordset object for the Table1 table
Set rsTable1 = dbLib.OpenRecordset("Table1")
rcount = rsTable1.RecordCount
'== Add New Record ============================
For i = 1 To rcount
With rsTable1
rsTable1.Edit
rsTable1.Fields(0) = i
rsTable1.Update
'-- Go to Next Record ---
rsTable1.MoveNext
End With
Next
Set rsTable1 = rsTable1
End Sub