我需要帮助找出如何正确执行更新查询,该查询将根据另一列是否包含最新信息来更新列。
我的表看起来像这样:
Document# | Revison# | Latest? |
----01--------01---------No-----
----01--------02---------No-----
----01--------03---------Yes----
----02--------01---------No-----
----02--------02---------Yes----
----03--------01---------Yes----
上面的所有字段都是文本字段。
文档编号可能与我多次收到同一文档的文档编号相同,但每次收到文档时修订版编号都会增加,因为文档是相同的,但已经修改过。我需要制作最新的?列通过运行查询来自动更新,该查询将检查该行是否是最新的行。
我尝试制作另一个表并对修订版进行计数,看看是否有任何高于当前行的修订版,如果是,那么如果没有更高版本则不是最新版本,那么它是最新版本。
我也想知道可能会检查一个人的最新日期,具体取决于最新日期是最新日期。
答案 0 :(得分:0)
此查询显示Access 2010中所需的结果。
SELECT
m.[Document#],
m.[Revison#],
IIf(
m.[Revison#]=DMax(
"[Revison#]",
"MyTable",
"[Document#]='" & m.[Document#] & "'"
),
"Yes",
"No"
) AS [Latest?]
FROM MyTable AS m;
我的[Document#]
和[Revison#]
字段都是数字字段。我假设您希望将文本作为[Latest?]
的类型。
这种方法只会使[Latest?]
只是查询中的计算字段...因此表格中不需要存在该字段,只要您需要查看[Latest?]
,就可以使用该查询。
但是,如果您希望将[Latest?]
作为字段保存在表格中,则可以将该查询转换为UPDATE
。请注意,当您添加或删除行时,表数据将不一致,直到您再次执行UPDATE
查询。
此UPDATE
查询适用于Access 2010中的示例数据:
UPDATE MyTable AS m
Set [Latest?] =
IIf(
m.[Revison#]=DMax(
"[Revison#]",
"MyTable",
"[Document#]='" & m.[Document#] & "'"
),
"Yes",
"No"
);