我在从查询返回到数据库的 Excel VBA 中有一个 ADOBE.Recordset。我应该如何在这个集合中找到符合特定标准的特定记录?下面是代码。任何人都可以为我填写“'打印出一个年龄是我的人的名字”部分吗?提前致谢!
Dim rs As ADOBE.Recordset
q = "select name, age from people where country = 'US'"
Set rs = conn.Execute(q) 'conn is an ADOBE.Connection
For i = 30 To 40
'print out the name of one person whose age is i
Next i
更新 1: 感谢 KazJaw!我认为您的解决方案应该有效。但是,我正在寻找更清洁的解决方案 -
- 我不想将查询结果保存到工作表中。我更喜欢他们在记忆中。
- 是否有我可以使用的 .Find 或 .Search 功能,这样我就不需要使用循环实现搜索(就像您在第二个解决方案中所做的那样)?
也许我在这里很贪婪,但理想情况下,我想要这样的东西:
Dim rs As ADOBE.Recordset
q = "select name, age from people where country = 'US'"
Set rs = conn.Execute(q) 'conn is an ADOBE.Connection
For i = 30 To 40
name = rs.Find("age = i")!name 'this line is where I am not sure how to achieve
MsgBox name & "'s age is " & i
Next i
为格式化道歉。我是该站点的新手,不确定如何正确缩进 For 循环中的两行。
更新 2:
是的 KazJaw,其他问题出现了。".Find" 要求 rs 能够向后滚动,这需要将其 lockType 设置为 adLockOptimistic。还没想好怎么弄 如果我会发布。
解决方案: 关键是使用rs.Open而不是conn.Execute并设置CursorType。
Dim rs As ADOBE.Recordset
q = "select name, age from people where country = 'US' Order By i"
Set rs = New ADODB.Recordset
rs.Open Source:=q, CursorType:=adOpenStatic, ActiveConnection:=ThisWorkbook.conn 'conn is an ADOBE.Connection
For i = 30 To 40
name = rs.Find("age = i")!name 'this line is where I am not sure how to achieve
MsgBox name & "'s age is " & i
Next i