-1

我的数据库中的记录有问题,所以我有一个包含大约 260,000 条记录的模板,并且对于每条记录,它们有 3 个标识列来确定记录的时间段和位置:一个代表年份、一个代表月份和一个为地区。那么识别具体项目的信息就是TagName和Description。我遇到的问题是,当有人将数据输入此数据库时,他们为同一设备输入了不同的描述,我知道这是因为标签名称相同。我是否可以编写代码通过数据库查找具有相同标签名称的项目并使用其中一种描述来替换不同的描述以获得更统一的数据库。此外,有些设备没有标签名称,因此我们希望避免“”案例。

同样面向未来,我在数据库中添加了更多列以允许检索更多信息,一旦我知道它们具有相同的标签名称和描述一次,有没有一种方法可以将数据填充到旧记录中数据库清理了吗?提前感谢您提供的信息,非常感谢。

我假设这必须使用某种类型的 VBA 来通过查找具有该描述的第一条记录并使用变量将该描述分配给具有相同标签名称的所有其他项目来修改记录?我只是不确定执行此操作的正确 VBA 语法。我假设回填过程会使用类似的方法?

4

1 回答 1

0

您的问题相当广泛且多方面,因此我将分步回答关键部分:

我遇到的问题是,当有人将数据输入此数据库时,他们为同一设备输入了不同的描述,我知道这是因为标签名称相同。

虽然您可以使用一些 SQL 代码轻松地修复这些不一致,但最好首先避免这些不一致:

  1. 创建一个新表,我们称其为“Tags”,其中包含 TagName 和 TagDescription 字段,并将 TagName 设置为主键。确保两个字段的必填项设置为 True,允许零长度为 False。

  2. 使用所有可能的标签填充这个新表 - 您可以使用 Access 术语中的一次性“追加查询”(SQL 中的 INSERT INTO 语句)来完成此操作。

  3. 从主表中删除标签描述列。

  4. 进入Relationships 视图并在两个表之间添加一对多关系,将主表中的TagName 字段链接到Tags 表中的TagName 字段。

  5. 根据需要,创建一个聚合两个表中的数据的查询。

此外,有些设备没有标签名称,因此我们希望避免“”案例。

在 Access 中,空字符串 ("") 的概念与真正的空白或“null”的概念不同。因此,用空值替换所有空字符串(如果有的话)是个好主意 -

UPDATE MyTable SET TagName = Null WHERE TagName = '';

然后,您可以在表设计器中将 TagName 字段的 Allow Zero Length 属性设置为 False。

此外,在未来,我向数据库添加了更多列,以允许检索更多信息

考虑更多的列而不是更多的表。

我认为这必须使用某种 VBA 来修改记录

VBA、SQL 或 Access 查询设计器(在幕后创建 SQL 代码)。就能够以最快的速度处理数据而言,SQL 是最好的,尽管纯 VBA(尤其是使用 DAO 对象库)更容易理解和遵循。

于 2013-10-31T11:42:48.910 回答