更新查询的 MS Access SQL 错误

Posted

技术标签:

【中文标题】更新查询的 MS Access SQL 错误【英文标题】:MS Access SQL error with Update Query 【发布时间】:2015-04-24 21:04:44 【问题描述】:

致力于在 SQL Server 数据库和 MS Access 之间链接数据。现在有人正在从 SQL 数据库报告中手动计算数据并将其输入 Access 以在 Access 中运行其他报告。

我创建了一个直通查询,以将相关信息从 SQL 数据库中提取到访问表中(一切正常)

现在我需要使用从 SQL 传递中检索到的数据来更新现有的访问表。由于各种原因,我尝试了许多不同的查询。这是最新查询的示例,它将为我提供所需的信息。如果我在 SQL Server 中设置沙箱并运行它 MSSQL Management Studio,这可以工作,但在访问中不起作用

UPDATE JT 
SET    JT.ContractAmt = SBD.TotalSum 
FROM   JobTable_TEST AS JT
INNER JOIN (
             SELECT Sum( Main.amt ) as TotalSum, Main.job 
             FROM  Main 
             GROUP BY Main.job
           ) AS SBD 
ON SBD.job = JT.JobNumber 

在访问上面生成以下错误“查询表达式中的语法错误(缺少运算符)。


更新尝试使用 SQL Passthrough 运行更新查询。

我按照建议更新了我的查询以直接从 Passthrough SQL 语句执行此操作,并收到以下错误。

ODBC--调用失败。

[Microsoft][SQL Server Native Client 11.0][SQL Server]无效的对象名称'TableName'。(#208)

这是我使用的直通查询的样子。

UPDATE AccessTable
SET AccessTable.amt = SQLResult.Total
FROM TableName AS AccessTable
    INNER JOIN ( SELECT SUM( SQLTableA.amt) as Total, SQLTableA.job
                 FROM SQLTableA 
                 LEFT OUTER JOIN SQLTableB ON (SQLTableA.company = SQLTableB.company) 
                                            AND (SQLTableA.job = SQLTableB.job) 
                 GROUP BY SQLTableA.job
                ) AS SQLResult
ON SQLResult.job = AccessTable.JobNum

希望能更好地描述我的表的位置以及我的更新需要如何进行,也许有人可以指出这是怎么回事,或者它是否会以这种方式工作。


任何建议将不胜感激

【问题讨论】:

考虑使用 Access 直通查询在服务器上执行 UPDATE 语句。 我喜欢这个想法,但似乎遇到了问题。当我修改此查询以从 SQL 直通查询更新访问表时,它无法识别访问表。使用查询和错误更新问题。 看来我误解了你告诉我们的内容。我的意思是执行UPDATE JT ... 作为传递查询,因为它在那里工作。我不明白 Access 表在哪里涉及。对不起。 【参考方案1】:

您的子查询(别名为 SBD)似乎缺少 job_no 列。因此,您将无法加入。

【讨论】:

这只是我的一个错字,抱歉。我已经更新了帖子中的 SQL

以上是关于更新查询的 MS Access SQL 错误的主要内容,如果未能解决你的问题,请参考以下文章

MS Access SQL:使用另一个表中的Sum更新连接查询

为啥 MS-Access 中的 Teradata 查询比 SQL Server 更快

MS Access SQL 语法错误

基于另一个查询的 MS Access SQL 更新查询

在 MS Access 中回滚多个 SQL 更新查询

引用其他表的 SQL MS Access 条件更新查询