Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 访问:如何从查询写入更新?_Ms Access - Fatal编程技术网

Ms access 访问:如何从查询写入更新?

Ms access 访问:如何从查询写入更新?,ms-access,Ms Access,在我的表Progetti中,我需要使用查询Query2更新字段Eroso 要在Progetti.Eroso上输入的值必须取自查询[Fatture query],其中[Fatture query].[Codice Progetto]=Progetti.[Codice Progetto] 问题是我在Query2中使用的SQL可能是错误的,因为我没有预期的结果:系统要求插入[fature Query].Sum。Query2中的代码如下所示 UPDATE Progetti SET Progetti.Er

在我的表
Progetti
中,我需要使用查询
Query2
更新字段
Eroso

要在
Progetti.Eroso上输入的值必须取自查询
[Fatture query]
,其中
[Fatture query].[Codice Progetto]=Progetti.[Codice Progetto]

问题是我在
Query2
中使用的SQL可能是错误的,因为我没有预期的结果:系统要求插入
[fature Query].Sum
Query2
中的代码如下所示

UPDATE Progetti SET Progetti.Eroso = [Fatture Query].Sum;
编辑

这是
[fature Query]
的SQL代码:

SELECT Fatture.[Codice Progetto], Sum(Fatture.Fattura) AS [Sum]
FROM Fatture
GROUP BY Fatture.[Codice Progetto];


我认为问题在于更新查询没有指定
[fature query]
中的行与
[Progretti]
中的行如何匹配,因此系统不知道要查看哪一行。尝试使用如下的
WHERE
子句:

    UPDATE Progetti SET Progetti.Eroso = [Fatture Query].Sum WHERE [Fatture Query].[Codice Progetto] = Progetti.[Codice Progetto];

我认为问题在于更新查询没有指定
[fature query]
中的行与
[Progretti]
中的行如何匹配,因此系统不知道要查看哪一行。尝试使用如下的
WHERE
子句:

    UPDATE Progetti SET Progetti.Eroso = [Fatture Query].Sum WHERE [Fatture Query].[Codice Progetto] = Progetti.[Codice Progetto];

由于您的查询
Fatture查询
使用聚合函数(
SUM
),因此引用此查询的任何查询都不再是可更新的,因为一旦聚合记录,就存在固有的一对多关系

因此,我相信您需要使用一个函数,例如,为每个要更新的记录计算适当的值,例如:

UPDATE
    Progetti 
SET 
    Progetti.Eroso = DSUM("Fattura", "Fatture", "[Codice Progetto] = '" & [Codice Progetto] & "'")

相反,如果从中获取值的查询未使用聚合函数(例如,
SUM
MIN
MAX
等)然后我建议在
更新
查询中加入
内部联接
,以便用于更新目标字段的值来自
Fatture查询
查询中的相应记录,例如:

UPDATE
    Progetti 
    INNER JOIN 
    [Fatture Query]
    ON
    Progetti.[Codice Progetto] = [Fatture Query].[Codice Progetto]
SET
    Progetti.Eroso = [Fatture Query].Sum

由于您的查询
Fatture查询
使用聚合函数(
SUM
),因此引用此查询的任何查询都不再是可更新的,因为一旦聚合记录,就存在固有的一对多关系

因此,我相信您需要使用一个函数,例如,为每个要更新的记录计算适当的值,例如:

UPDATE
    Progetti 
SET 
    Progetti.Eroso = DSUM("Fattura", "Fatture", "[Codice Progetto] = '" & [Codice Progetto] & "'")

相反,如果从中获取值的查询未使用聚合函数(例如,
SUM
MIN
MAX
等)然后我建议在
更新
查询中加入
内部联接
,以便用于更新目标字段的值来自
Fatture查询
查询中的相应记录,例如:

UPDATE
    Progetti 
    INNER JOIN 
    [Fatture Query]
    ON
    Progetti.[Codice Progetto] = [Fatture Query].[Codice Progetto]
SET
    Progetti.Eroso = [Fatture Query].Sum

谢谢,但上面说“操作必须使用可更新的查询”您的查询定义是什么。“查询定义”是什么意思?您能用查询的SQL代码更新您的问题吗?您可以通过单击
Design
按钮下方的向下箭头并选择
SQL
来查看此信息,谢谢,但它会显示“操作必须使用可更新的查询”您的查询定义是什么
fature查询
?很抱歉,我没有得到。“查询定义”是什么意思?您能用查询的SQL代码更新您的问题吗?您可以通过单击
Design
按钮下方的向下箭头并选择
SQL
谢谢,但它仍要求插入
[fature Query]。Sum
谢谢,但它仍要求插入
[fature Query]。Sum