我可以从MS Access运行带有SQL Server查询的CurrentDb.Execute吗?

问题描述 投票:1回答:2

我有2个表,其中一个是从Excel文件导入的,因此我创建了第二个表,以便从导入中收集一些信息,最后生成一个新的Excel表格,以便在另一个地方导入。

我的问题是:我有一个表ID,名称,帐户状态等。第二个表有从表a导入的ID,现在我想生成一个注释(一个值与表中几列的串联a)像这样:

DATE: 20/12/2017 | FirstName LastName | ID: 123456

为此我用表b准备了ID已经和我在MS ACCESS VBA中的代码目前是:

CurrentDb.Execute "UPDATE a " _
                   & " SET a.Commentary = 'Date: ' + CONVERT(nvarchar,GETDATE(),103) + ' | FirstName LastName | ID: ' + b.ID " _
                   & " FROM tableA a " _
                   & " INNER JOIN tableB b " _
                   & "     ON a.IdNum = b.ID"

我不知道为什么这会给我错误:

运行时错误'3075':查询表达式中的语法错误(缺少运算符)

....(上面的代码)

试图将代码修改为更多的VBA语言,更多的MS-Access语言却没有运气。

迪拜,谢谢你

vba ms-access
2个回答
1
投票

您的语法看起来像T-SQL,如果您要使用CurrentDb.Execute,则需要使用Jet / ACE SQL。这意味着:在UPDATE,no CONVERT,no GETDATE()&之后直接指定所有表作为首选连接运算符。

CurrentDb.Execute "UPDATE tableA a INNER JOIN tableB b ON a.IdNum = b.ID" _
                   & " SET a.Commentary = 'Date: ' & Date() & ' | FirstName LastName | ID: ' & b.ID " 

请注意,我假设您正在使用链接表,因为我没有看到任何地方指定的架构。


1
投票

不需要。您将需要一个连接字符串以及使用此连接的已保存或创建的传递查询。

然后将此查询的SQL属性设置为SQL字符串并执行查询。

或者 - 如果您将表格链接起来 - 就像Erik建议的那样。

© www.soinside.com 2019 - 2024. All rights reserved.