【问题标题】:DCount function in access without specific condition没有特定条件的访问中的DCount函数
【发布时间】:2015-10-17 23:35:51
【问题描述】:

我正在尝试获取访问报告以确定文本字段 (NH) 是否与相同的 ID 不匹配。例如,ID 179 有两行,但每个 NH 不同(12345 和 12346)。我正在尝试使用 DCount 来计算 NH 不匹配的 ID,如果它是相同的 ID,但我无法弄清楚。

这是我的代码示例: 这应该获取匹配的 ID,例如 179 和 179,并检查 NH 以查看它们是否相同,如果它们不同则返回计数。

CheckValue = DCount([ID], "vTestQuery", "[NH] <> '" & [NH] & "'" And "[ID] ='" & [ID] & "'")

如果 CheckValue 具有实际值,这将为 Me.txtColor 提供一个值,用于我设置的条件格式。

If (CheckValue > 0) Then
Me.txtColor = CheckValue

我还需要检查报告中的所有记录,并计算每个匹配的 ID 与不同的 NH,以便我可以标记不同的 NH。

谁能告诉我我是否在正确的轨道上,如果是这样,我的困境的解决方案。

非常感谢!

第一次编辑

样本数据:

+-----+------------+------------+------------+-------------+
| ID  | FullName   | DateOfServ | AccountNum | NoteH       |
+-----+------------+------------+------------+-------------+
| 179 | Test, Jane | 8/1/2015   | 458585     | AAA-1111111 |
| 180 | Test, Paul | 8/1/2015   | 458586     | AAA-2222222 |
| 181 | Test, John | 8/2/2015   | 458587     | AAA-3333333 |
| 214 | Test, Alex | 8/3/2015   | 458588     | AAA-4444444 |
| 214 | Test, Alex | 8/3/2015   | 458588     | AAA-4444445 |
| 215 | Test, Alex | 8/3/2015   | 458589     | AAA-5555555 |
| 215 | Test, Alex | 8/3/2015   | 458589     | AAA-5555555 |
+-----+------------+------------+------------+-------------+

所以我需要报告做的是突出显示或更改匹配但具有不同 NH 的 ID 的文本颜色 例如,记录 214 有两条记录,除了 NoteH 之外,所有的数据完全相同,我需要这两个 NoteH要突出显示或更改文本。我把有问题的 NoteH 都加粗了。让我知道这是否有帮助。

第二次编辑

因此,该查询适用于所有具有重复 NoteH 的重复 ID,但如果 NoteH 不同,它仍然只注册一个 ID。我添加了一个 IDCount 以显示由于 NoteH 不同,查询如何将每个 214 ID 注册为不同的。

结果如下:

+-----+------------+---------+
| ID  | NoteCount  | IDCount |
+-----+------------+---------+
| 214 | 1          | 1       |
+-----+------------+---------+
| 214 | 1          | 1       |
+-----+------------+---------+
| 212 | 2          | 2       |
+-----+------------+---------+

我需要一种方法让报告识别 214 是重复字段,但 NoteH 不一样。它真的很接近你建议的其他一切都很好用!!!

第三次编辑

SELECT May.ID, Count(May.ID) AS IDCount, FROM May INNER JOIN 
Count(CodeRyteCodingResults.[Note Handle]) AS NoteCount
CodeRyteCodingResults ON May.[Accession #] =
CodeRyteCodingResults.[Accession Number]
GROUP BY May.ID;

【问题讨论】:

  • 请提供样本数据。我没有关于 NH 在定义(字段、键、值)或数据(实际记录)方面的上下文。
  • 所以 ID 是自动编号,NH 是短文本。我需要浏览报告的记录,如果 ID 相同,例如 179 和 179,但 NH 不同,我需要 NH 字段更改颜色。如果我指定一个 ID,我可以让 NH 字段更改颜色,但我需要报告来检查多个 NH 的所有 ID。这是一些示例数据:ID:179,名称:Test Allen,日期:08/08/2015,NH:AAA-1234567...然后下一条记录将是这样的:ID:179,名称:Test Allen,日期:2015 年 8 月 8 日,新罕布什尔州:AAA-1112223。我需要 NH 标记这两个,因为 ID 是相同的@DonJewett
  • 如果您需要更多信息,请不要犹豫,谢谢!
  • 我希望看到这样的内容被编辑到你的问题中:stackoverflow.com/questions/14043162/… 没有它,这对我来说真的没有意义
  • 我根据您的要求添加了一个示例表@DonJewett

标签: ms-access vba dcount


【解决方案1】:

使用聚合查询和条件格式

创建单独的查询以获取每个 ID 的唯一注释计数。它看起来像这样(我使用了两个查询):

UniqueNotesQuery

SELECT ID, NoteH
FROM BaseTable
GROUP BY ID, NoteH

NoteCountsQuery(这个查询第一个)

SELECT ID, Count(NoteH) AS NoteCount
FROM UniqueNotesQuery
GROUP BY ID;

然后将其作为报告查询的一部分加入。它看起来像这样:

SELECT BaseTable.*, NoteCountsQuery.NoteCount
FROM BaseTable INNER JOIN NoteCountsQuery
ON BaseTable.ID = NoteCountsQuery.ID

在您的报告中,在文本框的条件格式中编写一条规则。像这样的:

[NoteCount] > 1

上面的这些查询只是从头开始编写的,因此它们未经测试,您需要为您的项目充实它们。

参考文献

【讨论】:

  • 该查询适用于除记录 214 之外的所有重复记录,因为它具有不同的 NoteH。这是需要捕获的。我尝试包含查询数据的图像,但我的声誉还不够高。所以我像以前一样将记录包含在一个表示例中。我还对我的原始评论添加了编辑。 @DonJewett
  • 发布您的汇总查询。如果您仅按 [ID] 分组,则根据您的示例数据,Notes 的计数应为 2。
  • 我在上面列出了聚合查询。是的,我删除了 NoteH 上的组,然后 NoteH 和 ID 的计数均为 2。唯一的问题是 NoteH 不同,需要标记我不需要标记具有匹配 NoteH 的重复 ID,但是没有匹配的 NoteH @DonJewett 的重复 ID
  • 非常感谢您的耐心和愿意帮助我意识到我所包含的信息和我的问题充其量只是新手。这是我第一次使用这样的网站,我将尽快学习以使答案更容易。 @DonJewett
  • 成功了,非常感谢!!!我在您的答案旁边标记了支票,我还有什么其他措施可以确保您的帮助获得充分的信誉和声誉吗? @DonJewett
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多