【问题标题】:Fill info to Excel from Access with an update button VBA使用更新按钮 VBA 从 Access 将信息填充到 Excel
【发布时间】:2014-09-01 12:53:14
【问题描述】:

我正在尝试使用更新按钮从访问数据库查询中获取信息到 Excel 电子表格。我找到了一些应该可以工作的代码,但是当我运行它时,它会说“运行错误'3061'。给定的参数太少,至少需要 1 个”。

代码如下:


Sub Rektangelmedrundadehörn1_Klicka()

Sheets("Blad1").Range("A2:B500").ClearContents

    Set DB1 = DBEngine.OpenDatabase("Path to my DB")
    Set QD1 = DB1.QueryDefs("Name of my Query")
    Set RS1 = QD1.OpenRecordset(dbOpenSnapshot, dbReadOnly)
    Sheets("Blad1").Range("A2").CopyFromRecordset RS1



    RS1.Close
    QD1.Close
    DB1.Close

End Sub

当我调试时,它停在“Set RS1”并说它是空的。也许我什至没有与我的访问列的连接?我检查了列的名称,它们是相同的。我还在 excel vba 中添加了对 access 和 DBO 的引用。

我只在 excel 中使用 2 列。 A1、B1

【问题讨论】:

  • 查询是否需要参数?

标签: vba excel ms-access button


【解决方案1】:

您的查询的 SQL 中有一些东西被 db 引擎认为是一个参数。我猜您的查询包含一个可在 Access 应用程序会话中使用的功能,但不能用于从 Access 会话外部运行的查询。可能性包括用户定义的函数和许多 VBA 函数。

无论我的猜测是否正确,数据库引擎都认为是一个参数。找出那是什么。

如果您知道如何设置临时断点,请在Set QD1 行设置一个。否则,在该行之后添加 Stop 语句。 (完成测试后删除Stop。)

Set QD1 = DB1.QueryDefs("Name of my Query")
Stop

当您运行代码时,这两种方法都会触发中断模式。在中断模式下,您可以使用“立即”窗口检查查询的 Parameters 集合。

Debug.Print QD1.Parameters.Count

如果这告诉您Parameters.Count 是 1,那么您可以找出该参数的名称。注意参数集合项从0开始编号。

Debug.Print QD1.Parameters(0).Name

希望一旦您看到参数名称,问题就会清楚。如果没有,请向我们显示参数名称和查询的 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多