2014-11-25 76 views
0

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

的ADO低于:

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

我也曾尝试:

p_moConn.Execute strSQL, adCmdText 

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

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

任何帮助表示赞赏!

感谢

马特

+0

ExecuteNonQuery也许? – Arvo 2014-11-25 11:34:31

+0

你能告诉我们Dim objCommand和p_moConn吗?与此同时,我会尝试从几年后的代码中找到一些代码,以查看未报告的ADO错误。并且是您与SQL Server的连接? – 2014-11-25 13:35:41

+0

嘿,所以不知道ExecuteNonQuery是什么,我以前没听说过。这是(目前)连接到Access后端的Excel前端。正如我所说,这将在未来发生变化,因此ADO的用法等,但这是为了证明概念等等等等;-)这43个查询中只有5个发生这种情况,43个循环运行,所以所有通过相同的ADO执行代码,所以我目前的调查路线是试图找出是什么使这5个不同的... Dim objCommand As ADODB.Command Private p_moConn As ADODB.Connection THANKS !!! – Shippwreck 2014-11-25 14:02:08

回答

0

干杯的帮助下,这是一件做与5个查询。我不能发布SQL(除了其他任何东西都很长......),但是由于长度和复杂性,Access在内部“摆弄”它。即它添加一些东西到查询的末尾:

AS [%$##@_Alias]; 

当我修改成:

AS [test]; 

的ADO代码运行它完美!顺便说一句,我认为自己没有得到错误的原因是因为我一直在寻找在VBA错误的对象,而不是ADO一个,我认为它在发现:

.ActiveConnection.Errors() 

但是,这是未经测试

再次感谢你们!

马特

BTW,我发现这得益于韦恩G.邓恩,当我看了看代码,看看我是否能发布我终于发现,访问已经改变的最后一行之前清理它...所以欢呼声;-)