【问题标题】:Creating a recordset in Access with VBA使用 VBA 在 Access 中创建记录集
【发布时间】:2012-10-06 04:02:50
【问题描述】:

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

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 = ...' 行上。

但是,如果我将选择查询的 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 控件。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

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

    【讨论】:

    • Doh,到处都提到使用动态集的记录计数是不准确的,除非您移动到集合中的最后一条记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多