我在 Microsoft Access 2007 中有一个列表表单,我正在尝试制作一个按钮,该按钮将在其中一个字段中搜索给定的短语。问题是我要搜索的字段是备注字段,我通常希望保持记录排序(按计数字段)。这会将我的备注字段截断为 255 个字符,并使该字段的其余部分无法搜索。因此,在搜索表单的 Form_Open 事件期间,我一直在关闭我正在搜索的表单的“OrderByOn”属性(或将“OrderBy”设置为“”),这似乎正确地取消了我的数据排序并使备忘录字段完全可见。但是,当我尝试搜索时,有时会在到达 FindNext 行时收到错误“Microsoft Visual Basic 运行时错误'1006':未知”。如果在当前记录和记录集末尾之间的记录的前 255 个字符中找不到搜索词,我想我会收到错误消息。这是搜索表单的代码:
Private Sub Form_Open(Cancel As Integer)
[Forms]![MyForm]![MySubform].[Form].OrderBy = ""
'[Forms]![MyForm]![MySubform].[Form].OrderByOn = False
End Sub
Private Sub Search_Click()
Dim vDescription As String
Dim r As Recordset
vDescription = ""
If Me![Description] <> "" Then vDescription = "[MyFieldName] LIKE('*' + '" & Me![Description] & "' + '*')"
If Not (vDescription = "") Then
Set r = [Forms]![MyForm]![MySubform].[Form].Recordset
> r.FindNext (vDescription)
If r.NoMatch Then
r.MoveFirst
r.FindNext (vDescription)
If r.NoMatch Then
MsgBox ("No match found.")
r.MoveFirst
End If
End If
End If
End Sub
我找不到此错误消息的任何搜索结果,这似乎很奇怪。为什么我会收到错误消息?我是否正确使用了记录集?我应该以不同的方式处理 OrderBy/OrderByOn 吗?