每当第1列重复输入时,如何使用每列2的最后一个条目更新双列Access表?

时间:2012-08-16 14:18:08

标签: sql ms-access access-vba ms-access-2007

为了更好地说明我的例子,这通常是我正在寻找的东西:

这就是我的开始:

Column 1 | Column 2
-------------------
    A    |   1
    B    |   2
    A    |   3 

我想结束:

1)这是首选,因为表格中的数据较少,但绝对没有必要

Column 1 | Column 2
-------------------
    A    |   3
    B    |   2 

2)

Column 1 | Column 2
-------------------
    A    |   3
    B    |   2
    A    |   3 

因此,为了更清楚地解释一下,我有一个包含大量数据的表。用户可以随时导入数据。问题是偶尔会有一些条目更新。在这种情况下,我需要使用最后添加的数据状态更新表中的所有条目。例如,如果最初A的值为1,并且稍后使用表示A值为3的条目更新该表,则需要更新整个表以显示A的值仅为3。

此外,虽然我知道如何在查询中执行此操作,但我需要能够在表上执行此操作。现在我已经想到了几个想法,但它们似乎都没有用。我尝试了以下行的更新查询:

"UPDATE tblData SET column2 = Last(Column2) GROUP BY Column1"

但这似乎并没有起作用。我也试过了:

"UPDATE tblData Set Column2 = DLast('Column2', 'tblData')" 

更接近。然而,它正在使用最后一条记录更新所有条目,如下所示:

Column 1 | Column 2
-------------------
    A    |   3
    B    |   3
    A    |   3 

我猜这是因为没有“GROUP BY”子句告诉它只为Column1的每个实例做这件事,但通过研究看起来你不能把“GROUP BY”放在一个“更新”声明。我应该如何处理这个以获得我正在寻找的结果?

编辑:此外,虽然我不是100%肯定这一点,但我认为解决这个问题的方法是使用DLast的第三个可选参数,即[criteria]参数。我能想到使用它的唯一方法是为Column1指定一个确切的值,这就是为什么我不确定如何在这里使用它,但我觉得必须有一种方法来操纵它来应用于每个单独的值Column1。

1 个答案:

答案 0 :(得分:0)

KryptKeeper - 对于HansUp的回复,对第2列的更新不一定是更高的数字吗?如果没有,那么max(column2)将不起作用。您没有提及您的表是计数器还是累加器或类似的东西。如果更新的记录在第2列中的值也会下降,那么您可能必须携带日期时间戳作为额外列,以便您可以在日期时间列上获取max()。