【问题标题】:How to Pass a Parameter from an Excel Sheet into an Access Make Table Query如何将 Excel 工作表中的参数传递到 Access 生成表查询中
【发布时间】:2020-07-13 19:14:18
【问题描述】:

我正在使用一个小函数打开一个 ADODB 连接(这工作正常),我正在尝试将一个参数传递给一个 Make Table 查询。并收到一条错误消息:“操作查询不能用作行源”

这是我正在测试的代码。

Conn.Execute (sql)

With cmd
    .ActiveConnection = Conn
    .CommandType = adCmdText
    .CommandText = "SELECT * FROM c1GetLIVEDBnTF WHERE [AS OF DATE] = ?"
End With

cmd.Parameters.Append cmd.CreateParameter("[AS OF DATE]", adInteger, adParamInput, 10)
cmd.Parameters(0).Value = Range("ASOFDATE").Value

Set rs = cmd.Execute

我正在尝试将 Range("ASOFDATE").Value(Excel 工作表)中的日期传递到 Access Make Table 查询中。

我找到了下面的示例,但无法开始工作。

Pass VBA Variable into Access Query(Excel VBA)

【问题讨论】:

  • 我不是 Access 方面的专家,但是... 如果您尝试先将 Range("ASOFDATE").Value 存储在变量中,然后再发送变量?我不确定您是否可以将数组作为变量发送。
  • 这段代码:Conn.Execute (sql)在做什么?你在哪里得到错误?
  • 您的“截至日期”字段真的是adInteger 类型,还是adDate 类型? (不过,这可能不会导致您的错误。)
  • 很抱歉没有更好地阐明设置。 MT Query 的名称是“c1GetLIVEDBnTF”,它将所有数据插入到名为“bLIVEDBnTF”的表中。
  • 您不能通过 Make Table 查询SELECT。您必须制作表格,然后从您制作的表格中进行选择。 (或者将生成表查询更改为选择查询。)如果没有经过大量测试,我对 ADODB 的了解不足,无法编写答案,因此其他人可以随时发布正确的答案。

标签: excel ms-access vba


【解决方案1】:

我终于搞定了。

Sub RunAccessQueries()

Dim db As DAO.Database
Dim ws As DAO.Workspace
Dim rst As DAO.Recordset

GoHere = ThisWorkbook.Path

ASOFDATE = Format(Range("ASOFDATE").Value, "MM/DD/YYYY")

Set ws = DBEngine.Workspaces(0)
Set db = DBEngine.OpenDatabase(GoHere & "\Main.mdb", False, False, "MS Access;PWD=pass")

sql = "INSERT INTO etc.;"
db.Execute sql, dbFailOnError
RecordsUpdated = db.RecordsAffected

db.Close

End Sub

解决方案出现在这里。

Error 3219- Invalid Operation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多