【问题标题】:Run-time error -2147467259 (80004005) on VBA macroVBA 宏上的运行时错误 -2147467259 (80004005)
【发布时间】:2016-07-21 20:32:55
【问题描述】:

首先,我确实查看了其他线程,但指定的所有答案都没有帮助,因为我只在特定 SQL 执行时收到此错误。每当我尝试使用 select * from dual 运行 SQL 时,我都会收到以下错误消息。

下面是我的 VBA 代码

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
    StrCon = "Driver={Microsoft ODBC for Oracle}; " & _
            "CONNECTSTRING=(DESCRIPTION=" & _
            "(ADDRESS=(PROTOCOL=TCP)" & _
            "(HOST=dhotname)(PORT=1521))" & _
            "(CONNECT_DATA=(SERVICE_NAME=APSQ))); uid=username; pwd=password;"
cn.Open (StrCon)
vSQL = "select * from request" 
rs.Open vSQL, cn

【问题讨论】:

  • 您真的希望我们在不提供任何代码的情况下帮助您吗?
  • 这个问题或答案中没有任何内容对其他人有帮助 - VTC。
  • 如果你谷歌“80004005 Microsoft”你会得到一些线索。有时它就像数据库被另一个“用户”锁定一样简单。
  • @Scott 回答你这只是 SQL 问题,所以你期待什么代码。 @ Bryan 你不认为我已经尝试过吗,我在谷歌上做过,但如果你看到答案,所有关于 DSN 的讨论都在我的情况下是正确的。
  • 我不是在这里写作的专家,但我发现在我的 SQL 中,我只有一个带有 TImeStamp 的列,它给了我这个错误,并且在删除它之后它对我有用。我的意图是给其他人一些提示,检查那里的 SQL...

标签: vba excel


【解决方案1】:

我将解决方案放在这里,这对我有用。在其他类似的帖子中,它更多的是连接问题,但在我的场景中,它是我试图访问的表中的列之一。在我的表中,我有一列有时间戳,这就是导致上述错误的列,当我删除或使用该列的格式时,它毫无例外地工作。我想知道这个错误是否更容易解释,因为我花时间尝试其他东西而不是仅仅修复我的 SQL。

解决方案:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
    StrCon = "Driver={Microsoft ODBC for Oracle}; " & _
            "CONNECTSTRING=(DESCRIPTION=" & _
            "(ADDRESS=(PROTOCOL=TCP)" & _
            "(HOST=dhotname)(PORT=1521))" & _
            "(CONNECT_DATA=(SERVICE_NAME=APSQ))); uid=username; pwd=password;"
cn.Open (StrCon)
vSQL = "select request_id,user_name from request" 
rs.Open vSQL, cn

现在,如果您查看上面的示例,我已经指定了确切的列名,这里的问题是具有时间值的 REC_DT 列。您可以转换该值或删除列,对我而言,该值不是必需的,因此只需从我的 SQL 中删除即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多