从查询列

时间:2016-01-28 17:57:09

标签: ms-access access-vba

我正在尝试更新我的表中的列Inputcounts称为连接一个名为InputConcatenates的查询,该查询具有一个也称为连接的列。我正在运行带有字段名称的更新查询,将表名称连接为InputCounts,将字段更新为[InputConcatenates]。[Concatenate]。但每次运行查询时,它都会回退0条记录。我的语法错了吗?

更新查询SQL:

UPDATE InputCounts INNER JOIN InputConcatenate
ON InputCounts.CONCATENATE = InputConcatenate.CONCATENATE 
SET InputCounts.CONCATENATE = [InputConcatenate].[CONCATENATE];

InputConcatenate查询SQL:

SELECT InputCounts.FLEET, InputCounts.AMMs, [FLEET] & [AMMs] AS CONCATENATE
FROM InputCounts;

1 个答案:

答案 0 :(得分:1)

您报告此查询可以完成您想要的...

UPDATE InputCounts
SET CONCATENATE = [FLEET] & [AMMs]
WHERE CONCATENATE Is Null;

这可能没问题。但是,在您执行CONCATENATE之前,UPDATE不会更新,并且在FLEETAMMs

确定CONCATENATE是否确实需要作为表格中的字段存在。您可以使用查询在需要时派生它:

SELECT *, FLEET] & [AMMs] AS CONCATENATE
FROM InputCounts;

通过查询,CONCATENATE始终是最新的。

如果您的数据库是ACCDB格式且Access版本是> = 2010,则另一种可能性是在表格的设计中将CONCATENATE设为“计算字段”类型:

table Design View showing calculated field type

如果您希望只要FLEET或AMM为空,CONCATENATE为空,请将字段的 Expression 属性更改为[FLEET] + [AMMs]

计算字段的优点是Access可以自动更新其值,而无需您的进一步努力(如执行UPDATE)。

缺点是您无法索引计算字段。这意味着它不适合加入,WHERE条件,ORDER BY等。您必须确定它是否适合您的应用程序。 : - )