我有一个 ListBox
在一个有文本框绑定到表格的表单中,这个表单是用来编辑记录的。这个表单是用来编辑记录的。ListBox
项来浏览记录。该操作类似于拆分表单的工作方式,但在这种情况下,我没有使用数据表,而是使用了一个 ListBox
.
以下是我的代码。
Private Sub Form_Load()
Dim sqlstr As String
sqlStr = "SELECT CustomerStreet, CustomerName, Address FROM tblCustomers ORDER BY CustomerName"
Me.SearchListBox.RowSource = sqlStr
End Sub
Private Sub SearchListBox_AfterUpdate()
Dim str As DAO.Recordset
Dim strRecord As Integer
Set rs = Me.RecordsetClone
strRecord = rs.Fields("ID").Value
DoCmd.GoToRecord acDataForm, "frmEdit", acGoTo, strRecord
End Sub
RecordsetClone只有在你使用FindFirst和Bookmark时才有用。你的代码只是使用第一条记录的ID,这不会正确应用Offset参数。这将无法正确应用Offset参数。
列表框需要ID字段。这一列可以用0宽度隐藏。输入一个项目的第一个字母将推进列表框项目。就像现在一样,用户必须键入客户街道的第一个字母,而不是客户名称。由于列表框RowSource不是动态过滤的,所以可以在列表框设计中加入它,而不是在Load事件中设置。SELECT ID, CustomerStreet, CustomerName, Address FROM tblCustomers ORDER BY CustomerName;
如果你想转到一个记录而不是过滤表单,类似这样。
Private Sub SearchList_AfterUpdate()
With Me.RecordsetClone
.FindFirst "ID=" & Me.SearchListBox
If Not .NoMatch Then Me.Bookmark = .Bookmark
End With
End Sub