Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Sql 从另一个表的多条记录更新表中的一条记录。其中一个表的列名是另一个表的字段_Sql_Vba_Ms Access - Fatal编程技术网

Sql 从另一个表的多条记录更新表中的一条记录。其中一个表的列名是另一个表的字段

Sql 从另一个表的多条记录更新表中的一条记录。其中一个表的列名是另一个表的字段,sql,vba,ms-access,Sql,Vba,Ms Access,表1 表2 需要从Table1.Type中更新表2,其中Table1.Type与表2中的列名匹配。对于具有相同日期的行。到目前为止,我在VBA上编写了一个更新查询,但它只为表1中的第一条记录更新了表2 aa = recordset.Fields("Type").Value sql = "UPDATE LossTonnesByUnitAmmonia " _ & "INNER JOIN TempUnitLossApprova

表1

表2

需要从Table1.Type中更新表2,其中Table1.Type与表2中的列名匹配。对于具有相同日期的行。到目前为止,我在VBA上编写了一个更新查询,但它只为表1中的第一条记录更新了表2

aa = recordset.Fields("Type").Value

sql = "UPDATE LossTonnesByUnitAmmonia " _
      & "INNER JOIN TempUnitLossApproval ON(LossTonnesByUnitAmmonia.Date = TempUnitLossApproval.Date) " _
      & "SET LossTonnesByUnitAmmonia." & aa & " = TempUnitLossApproval.Tonnes"

DoCmd.RunSQL sql 

谢谢

您打开记录集并从字段
中选择一个值键入
,就这样了


要更新更多字段,请循环记录集以检索所有要更新的字段名,然后重新生成/扩展SQL以包含这些字段名。

update query仅更改Ref列。Loop可以纠正这一点。但它运行了两次,最后一次更新的值来自steam。所以每次查询都会对所有记录运行,每次都会从最后一行更新。是的,如果在循环中运行更新。把它移到环的外面(后面)。