【问题标题】:VBA ADO Insert failing silently (no errors)VBA ADO Insert 静默失败(无错误)
【发布时间】:2015-01-23 09:13:32
【问题描述】:

我有一个非常令人沮丧的问题。我有一个插入查询,如果您从访问权限内运行它会运行良好(大约需要 2 分钟才能完成),但是当我尝试通过 ADO 从 Excel 以编程方式运行它时,.execute 行操作在几秒钟内没有错误,但确实实际上并未向表中插入任何数据。

我使用的ADO如下:

With objCommand
    .ActiveConnection = p_moConn
    .CommandType = adCmdStoredProc
    .CommandText = "[" & strQueryName & "]"
    .Execute
End With

我也试过了:

p_moConn.Execute strSQL, adCmdText

结果完全相同。 (strQueryName 是保存过程的名称,strSQL 是原始 SQL)

顺便说一句,在我们开始之前,我没有使用 DAO,因为这是一个原型,将从 Access 迁移到“主”数据库系统,唯一需要更改的代码应该是连接字符串...手指交叉...

感谢任何帮助!

谢谢

马特

【问题讨论】:

  • ExecuteNonQuery 也许?
  • 你能给我们看看 objCommand 和 p_moConn 的 Dim 吗?同时,我将尝试查找几年前的一些代码,这些代码将调查未报告的 ADO 错误。您是否连接到 SQL Server?
  • 嘿,所以不确定 ExecuteNonQuery 是什么,我以前没听说过。这是(目前)连接到 Access 后端的 Excel 前端。正如我所说,这将在未来发生变化,因此 ADO 的使用等,但这是为了概念证明等等 ;-) 43 个查询中只有 5 个会发生这种情况,并且 43 个在循环中运行,所以所有通过相同的 ADO 执行代码,所以我目前的调查路线是尝试找出这 5 个不同的原因... Dim objCommand As ADODB.Command Private p_moConn As ADODB.Connection THANKS!!!
  • 你能在 strQueryName 中发布 SQL 吗?

标签: vba ms-access-2010 ado


【解决方案1】:

为帮助干杯,这与这 5 个查询有关。我不能发布 SQL(除了它很长......),但由于长度和复杂性,Access 在内部“摆弄”它。也就是说,它在查询的最后添加了一些内容:

AS [%$##@_Alias];

当我将其更改为:

AS [test];

ADO 代码完美运行!顺便说一句,我认为我没有收到错误的原因是因为我正在查看 VBA 错误对象,而不是我认为它在其中找到的 ADO 对象:

.ActiveConnection.Errors()

但这是未经测试的

再次感谢大家!

马特

顺便说一句,感谢 Wayne G. Dunn,我发现了这一点,因为当我查看代码以查看是否可以在发布之前对其进行清理时,我终于注意到 Access 已更改的最后一行......所以干杯 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多