使用VBA在Access中创建记录集

时间:2012-10-06 04:02:50

标签: vba access-vba

从标题中,我知道这似乎已被回答了太多次,但我有一系列难以理解的问题。这也是我第一次通过帖子寻求帮助,所以我可能会忘记提及一些内容。

Function update_location_id()

    Dim rs As DAO.Recordset
    Dim db As Database
    Dim strSQL As String

    Set db = CurrentDb
    strSQL = "select id from location"

    Set rs = db.OpenRecordset(strSQL)

    MsgBox (rs.RecordCount)


End Function

我从这个函数中删除了几乎所有代码,只是为了弄清楚为什么我无法获得记录。此代码生成“参数太少。预期在set rs = ...”行。

但是,如果我将select查询的id更改为*,则可以正常工作。然而,它返回1.由于目前位置表中总共有3条记录,这有点令人困惑。

只需填写所需的位置表

id    description
1     "Location 1"
2     "Location 2"
3     "Location 3"

这导致我拉出我的头发,如果我不能做这样的基本数据库操作,我就无法继续我的项目......从中获取信息。

参考:Visual Basic for Applications,Microsoft Access 14.0对象库,OLE自动化,Microsoft Office 14.0 Access数据库引擎对象,Microsoft Internet Controls。

1 个答案:

答案 0 :(得分:2)

通常,当您使用表中不存在的列名时,会出现“参数太少”错误,因此将其解释为参数。
因此,尽管您提供了表格数据,我还是会再次检查表格名称(位置)和列名称(id) 至于“1”,是的,你必须插入
    rs.MoveLast
    rs.MoveFirst
打开记录集后获取正确的RecordCount。在转到最后一个之前,记录集不知道它产生了多少记录(这个问题还有一些细节,我现在不记得了,关于记录集类型等等。)