首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAO RecordsAffected在passthru合并后不返回正确的值

DAO RecordsAffected在passthru合并后不返回正确的值
EN

Stack Overflow用户
提问于 2016-09-26 14:12:10
回答 1查看 363关注 0票数 2

下面的代码调用passthru查询(PTQ),并应该显示一条消息,指示受影响的记录数:

代码语言:javascript
复制
With CurrentDb
    .Execute "ArticleClientTmpUpdate"
    MsgBox .RecordsAffected & " records updated"
End With

PTQ做了一个简单的合并:

代码语言:javascript
复制
merge into dbo.ArticlesClients ac
using (select * from dbo.ArticlesClientsTmp) act on ac.IdArticle = act.IdArticle and ac.IdClient = act.IdClient 
when matched then 
    update  SET ac.IdArticle = act.[idArticle], 
                ac.IdClient = act.[idclient], 
                ac.RefClient = act.[refClient], 
                ac.Commentaire = act.[commentaire], 
                ac.ModDate = getdate()
when not matched then 
    insert (idArticle, idClient, RefCLient, Commentaire)
    values (act.idArticle, act.idClient, act.RefCLient, act.Commentaire);

在清空目标表后从SSMS执行时,我可以看到9200行受到影响(例如创建)。

当使用上面的VBA执行相同的合并时,它会说"0条记录导入了“,但是它做了这项工作,并创建了9200条记录。

有什么解释吗?这个问题有解决办法吗?使用ADO connection而不是DAO CurrentDb会更好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 15:46:40

这是故意的。一个带有ReturnsRecords = False的传递查询被发送到服务器,从Access的角度来看就是这样。

.RecordsAffected从不设置为传递查询.

您必须创建一个执行SQL的存储过程,然后返回记录数。

来自https://bytes.com/topic/access/answers/204949-passthrough-queries-recordsaffected

代码语言:javascript
复制
CREATE PROCEDURE ...

SET NOCOUNT ON;

<your Update query here>

SELECT @@ROWCOUNT AS myROWCOUNT;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39705203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档