MS Access 更新查询不断询问“参数值”

Posted

技术标签:

【中文标题】MS Access 更新查询不断询问“参数值”【英文标题】:MS Access Update Query Keeps Asking for "Parameter Value" 【发布时间】:2018-04-20 01:27:22 【问题描述】:

我会尽量简化情况... 我与现场服务技术人员团队合作。我们之间共享很多工具和设备,因为有人不想在我们身上花钱。我正在使用 MS Access 开发一种方法来跟踪谁拥有大约 2000 多个项目中的哪些工具或特定设备。我已经把这个过程弄清楚到最后一步。它是这样的:

    Tech 打开一个表单,显示所有 2000 多个项目的当前位置/所有权,该表单从 SharePoint 列表中提取并插入 本地表。 技术对本地表进行更改。 技术完成后,Sharepoint 列表会从本地表中更新(这是我卡住的地方)。

我已按照我能理解的每个教程进行操作、演练和解决。但是每次我运行查询时,Access 都会询问我要更新的每个字段的“参数值”。请注意,我发现的所有内容都显示了如何更新表中的一个字段的示例。我正在尝试每行更新 5 个字段。当我让 Access 为此构建 SQL 时,它看起来像:

UPDATE Table1 INNER JOIN Table2 
ON Table1.[Asset ID] = Table2.[Asset ID] 
SET Table1.Department = Table2.[Department], Table1.[Cal Status] = Table2. 
[Cal Status], Table1.[Return Date] = Table2.[Return Date], Table1.Comments = 
Table2.[Comments], Table1.[Cal Due] = Table2.[Cal Due], Table1.Active = 
Table2.[Active];

这些字段没有拼写错误,我已经检查并仔细检查了。

我已经看到一些关于 Access 如何在 UPDATE 方面出现问题的 cmets。但是我所做的一切都是自学的,在我理解这一点之前,我不能切换到其他东西。本周初刚开始接触Access和SQL,请耐心等待。

编辑

UPDATE Assets
SET Assets.Department = AssetsSharePoint.[Department],
Assets.[Cal Status]   = AssetsSharePoint.[Cal Status],
Assets.[Return Date]  = AssetsSharePoint.[Return Date],
Assets.Comments       = AssetsSharePoint.[Comments],
Assets.[Cal Due]      = AssetsSharePoint.[Cal Due],
Assets.Active         = AssetsSharePoint.[Active]
FROM Assets
INNER JOIN AssetsSharePoint ON Assets.[Asset ID] = AssetsSharePoint.[Asset 
ID];

这给了我一个“语法错误。缺少运算符”然后突出显示 FROM

编辑 2

如果我将其缩减为 1 个字段,则省略 FROM,并包含 WHERE 即可。我不想为此进行 5 个单独的查询。但我想我将不得不......

【问题讨论】:

我还打算建议更新一个字段,但这有点违背了你想要做的事情的目的。 这应该可以工作,特别是如果您在查询设计器中创建了查询。可能是你把代码简化了太多,能不能把原来的查询加进去? @andre 第一次编辑的代码是直接复制粘贴。 【参考方案1】:

试试这个:

UPDATE Assets, AssetsSharePoint
SET Assets.Department = AssetsSharePoint.[Department],
Assets.[Cal Status]   = AssetsSharePoint.[Cal Status],
Assets.[Return Date]  = AssetsSharePoint.[Return Date],
Assets.Comments       = AssetsSharePoint.[Comments],
Assets.[Cal Due]      = AssetsSharePoint.[Cal Due],
Assets.Active         = AssetsSharePoint.[Active]
WHERE Assets.[Asset ID] = AssetsSharePoint.[Asset ID];

更简洁的声明:

UPDATE Assets INNER JOIN AssetsSharePoint ON Assets.[Asset ID] = AssetsSharePoint.[Asset ID]
SET Assets.Department = AssetsSharePoint.[Department],
Assets.[Cal Status]   = AssetsSharePoint.[Cal Status],
Assets.[Return Date]  = AssetsSharePoint.[Return Date],
Assets.Comments       = AssetsSharePoint.[Comments],
Assets.[Cal Due]      = AssetsSharePoint.[Cal Due],
Assets.Active         = AssetsSharePoint.[Active]

【讨论】:

对不起,这也不起作用。它不喜欢FROM 声明 糟糕,忘记删除 FROM 子句。再试一次。 抱歉还是没有运气。 忘记调整WHERE子句,重试。 似乎没有任何工作正常,我正在放弃这个想法并重新考虑我的方法。不过感谢您的帮助。【参考方案2】:

你的语法是关闭的,它应该是UPDATE ... SET ... FROM:

UPDATE t1
INNER JOIN Table2 t2
    ON t1.[Asset ID] = t2.[Asset ID]
SET
    t1.Department    = t2.[Department],
    t1.[Cal Status]  = t2.[Cal Status],
    t1.[Return Date] = t2.[Return Date],
    t1.Comments      = t2.[Comments],
    t1.[Cal Due]     = t2.[Cal Due],
    t1.Active        = t2.[Active]

【讨论】:

谢谢,没想到这么快就回复了!我使用了该语法(替换了真实的表名),它给了我Syntax error. Missing Operator in Query Expression 然后突出显示FROM 很抱歉,在看到您的回复后我意识到我本可以更努力地格式化我的代码。 @TuckerBlack 我看不到你运行的实际代码,所以我无法解释为什么它不起作用。 From this SO answer 我的语法看起来是正确的。你能给我更多的信息来帮助我调试你的查询吗? 用信息更新了我原来的帖子 @TuckerBlack 我们的其中一个查询应该有效。也许其他人可以阐明这一点。 这是 T-Sql,Access Sql 不做UPDATE .. SET ... FROM ...,请参阅您链接的问题中的第二个答案。

以上是关于MS Access 更新查询不断询问“参数值”的主要内容,如果未能解决你的问题,请参考以下文章

MS ACCESS:从参数查询更新文本框

MS Access 更新查询和带字符串参数的内部连接

无法弄清楚 MS Access 的此更新查询代码有啥问题

MS Access 2016 VBA 导致“输入参数值”窗口

通过 MS Access 例程更新 SQL Server(内部连接错误)

MS Access:使用多个连接更新语句 [重复]