这是我输入的内容:
Private Sub Command0_Click()
Dim rs As Recordset
Dim sql As String
Dim db As Database
Set db = CurrentDb
sql = "SELECT * FROM Transactions"
Set rs = db.OpenRecordset(sql)
Do Until rs.EOF
rs.MoveNext
Loop
If Not rs.EOF Then
MsgBox "test"
End If
End Sub
好的,那么如何填充这个?基本上我只是从这开始,所以我想知道如何使用这个简单的代码,并像查询一样运行它,以便打开结果记录集。
谢谢!
答案 0 :(得分:2)
根据您的尝试,您可能会过度复杂化。更好的方法是将表单的记录源(在属性表中)设置为事务表,然后使用可视化设计器在表单上删除所需的字段。
然而,如果你真的必须这样做,这里的代码将替换你所拥有的,并打开一个电子表格,如视图中的数据视图。
Private Sub Command0_Click()
docmd.Opentable "transactions"
End Sub
如果要将结果限制为查询,请先构建查询并保存,然后使用以下代码。
Private Sub Command0_Click()
docmd.OpenQuery "MyQueryName"
End Sub
要非常直观,原始代码DID会填充记录集(在rs对象中)。您可以使用while循环中的代码按名称访问字段,例如
debug.print rs("Field1")
答案 1 :(得分:2)
您将代码放在Do..Loop中。将针对遇到的每条记录评估此代码。
Do Until rs.EOF
Msgbox "The value for MyField is " & rst!MyField
rs.MoveNext
Loop
答案 2 :(得分:2)
其他一些言论和建议:
1)始终指出您使用的记录集类型。这里似乎是一个DAO记录集,所以请完整的声明如下:
Dim rs as DAO.recordset
在另一台计算机上运行,并且根据ADODB和DAO库的声明顺序,完全相同的代码可能会生成错误。
2)如果没有可用的记录,为了避免任何令人不安的错误消息,您可以添加额外的测试,例如
if rs.recordcount = 0 then
Else
rs.moveFirst
....
3)要使用debug.print浏览完整的记录集,您可以这样做。只需将'm_debugLine'作为字符串,并在声明中将'fld'作为DAO.Field。
rs.MoveFirst
do while not rs.eof
m_debugLine = ""
for each fld in rs.fields
m_debugLine = m_debugLine + vbTab + fld.value
next fld
debug.print m_debugLine
rs.movenext
loop
4)你甚至可以在打印数据之前添加一个debug.print行来打印字段名称。我想你会找到这个
答案 3 :(得分:1)
你得到记录集记录的列,如rs(0)或rs(“columnname”)....
如果您的交易表有三个名为a,b,c的列,您可以像:
rs(0)
rs(1)
rs(2)
或
rs("a")
rs("b")
rs("c")