我正在使用openrecordset进行选择查询,但我希望查询在列中查找特定单词,并仅返回这些记录。
我尝试了不同的样式,看来我一直收到相同类型的错误: 运行时错误6:溢出。那是因为我拥有一个计数器,该计数器只能容纳不超过32,000个字节。
如果我删除计数器,那是因为一个无休止的循环,没有错误消息只是在后台运行。我必须重新启动访问权限。
'Variables
Dim counter As Integer
'DB variables
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
'Get records query
Set rs = db.OpenRecordset("SELECT * FROM Price_List WHERE Description LIKE '*cabin*'")
'Determine if the specified valve for this project was found
If rs.EOF Then
MsgBox "No records were found for enclosures." & vbNewLine & vbNewLine & _
"You can contact someone", vbInformation + vbOKOnly, "No Records Found"
End
End If
List10.RowSource = ""
'display
List10.ColumnCount = 5
List10.ColumnWidths = "1500;4000;1200;1200;1200" 'Setting column widths for each record
counter = 0
Do
If counter = 0 Then
List10.AddItem ("Part Number)
List10.AddItem (rs!PartNumber)
Else
List10.AddItem (rs!PartNumber)
End If
'counter = counter + 1
Loop Until rs.EOF
Label14.Caption = rs.RecordCount
rs.Close
db.Close
我希望它至少返回5条记录,但我想它还会返回更多的记录!
答案 0 :(得分:1)
几个问题。
首先,不能保证光标将是第一条记录,因此您必须使用
If rs.EOF AND rs.BOF
检查是否没有返回记录。
然后您必须以
开始rs.MoveFirst
转到第一条记录,然后在循环中需要
rs.MoveNext
移至下一条记录,依此类推
您当前的代码仅在记录集恰好打开的那条记录上无限运行。
答案 1 :(得分:0)
检查rs.EOF
之后,您需要将光标放在第一条记录上,并将标题"Part Number"
添加到列表中,因此在循环内不需要if
。
之后,开始循环,并在每次迭代结束时移至下一条记录:
rs.MoveFirst
List10.AddItem ("Part Number")
Do
List10.AddItem (rs!PartNumber)
counter = counter + 1
rs.MoveNext
Loop Until rs.EOF