1

我正在开发一个访问数据库,其中在一个表输入中,由于使用了一些旧软件,重复项经常出现在(我最终想要的)主键中,原因如下所示:

ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |   Water      |   John       |   Piping      |
A  |   Water      |   James      |   Piping      |
B  |   Steam      |   Sam        |   Piping      |
B  |   Steam      |   Sam        |   Modeling    |
C  |   Hydrogen   |   Joe        |   Piping      |
D  |   Steam      |   Joe        |   Piping      |

参考 ID 字段的重复查询产生:

ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |   Water      |   John       |   Piping      |
A  |   Water      |   James      |   Piping      |
B  |   Steam      |   Sam        |   Piping      |
B  |   Steam      |   Sam        |   Modeling    |

不希望自动删除这些重复项,因为重要的是要知道软件模型更改了设计者或转移到了另一个团队。因此,这些都是人工审核的。

但是,此表可以包含多达 30 个字段,并且查找单个非重复项可能会非常令人眼花缭乱。因此,我想要的输出将是:

ID |   Fluid      |   Designer   |   Team        |
--------------------------------------------------
A  |              |   John       |               |
A  |              |   James      |               |
B  |              |              |   Piping      |
B  |              |              |   Modeling    |

我对 SQL 的经验很少,但花了一些时间使用 Visual Basic,所以我的猜测是一些标准,例如:

if(record(n)=record(n-1), display("")

但是,从我对访问和 SQL 的基本了解来看,我知道到目前为止,与 Visual Basic 相关的是苹果与橘子的比较。

我正在运行 MS Access 2007-2010。


编辑:现在研究规范化(抱歉,我是初学者)。尽管关于我的数据库问题的更多细节。还更新了上面的决赛桌。

我认为我的数据库应该如何工作:

  1. 从软件导入数据(每天)。这产生了表 1。
  2. 使用重复查询查找 ID 列中的任何重复项。这是表 2。
  3. 使用查询生成一个表,该表将显示重复的 ID 以及重复的相应列。

软件中的错误源于它将新数据修改为预先存在的数据,但仅删除了完全相同的重复数据。如果说,不同的用户在模型上工作,那么它不会更新当前 ID,而是添加一个新行,其中所有详细信息都相同,除了不同的用户。

4

1 回答 1

0

条件格式

听起来您正在寻找的是一种简单的方法,可以直观地发现相似记录中一长列列中的(少数)差异。几年前我做过一个非常相似的项目,它生成了一份报告来查看用户对其个人资料所做的更改。我处理它的方法是使用条件格式来突出显示不同的字段。

在您的比较报告中,我还将按ID具有组标题的列进行分组,以便在组之间进行简单的视觉分离。

对于报表中的比较公式,您可以比较组中字段的Min()Max()值。如果最小值和最大值相同,则字段在组中匹配。如果没有,您可以使用条件格式突出显示该字段。

在此处输入图像描述

我想如果你想变得非常花哨,你可以扩展这个表达式以使用一个运行总和来只突出第二条记录中的变化。

隐藏重复值

另一种方法是隐藏组中后续记录的重复值。这将涉及相同的分组概念,但在报告中您将Hide Duplicates字段上的属性设置为True。采用这种方法,您会在列表顶部看到一条完整的记录,但随后记录的字段只会在值更改时显示。

在此处输入图像描述

于 2018-07-26T19:38:09.690 回答