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 2016 VBA 导致“输入参数值”窗口