无特定条件访问中的DCount函数
DCount function in access without specific condition
我正在尝试获取访问报告以确定文本字段 (NH) 是否与同一 ID 不匹配。例如,ID 179 有两行,但每个 NH 不同(12345 和 12346)。我正在尝试使用 DCount 来计算 NH 不匹配的 ID(如果它是相同的 ID)但我无法弄清楚。
这是我的代码示例:
这应该得到匹配的 ID,例如 179 和 179,并检查 NH 以查看它们是否相同,如果不相同,则 return 计数。
CheckValue = DCount([ID], "vTestQuery", "[NH] <> '" & [NH] & "'" And "[ID] ='" & [ID] & "'")
如果 CheckValue 有实际值,这会为我设置的条件格式提供 Me.txtColor 的值。
If (CheckValue > 0) Then
Me.txtColor = CheckValue
我还需要它遍历报告中的所有记录并计算每个具有不同 NH 的匹配 ID,以便我可以标记不同的 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 来显示查询如何将每个 214 ID 注册为不同的,因为不同的 NoteH。
结果如下:
+-----+------------+---------+
| 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;
使用聚合查询和条件格式
创建单独的查询以获取每个 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
上面的这些查询只是从头开始编写的,因此未经测试,您需要为您的项目充实它们。
参考资料:
我正在尝试获取访问报告以确定文本字段 (NH) 是否与同一 ID 不匹配。例如,ID 179 有两行,但每个 NH 不同(12345 和 12346)。我正在尝试使用 DCount 来计算 NH 不匹配的 ID(如果它是相同的 ID)但我无法弄清楚。
这是我的代码示例: 这应该得到匹配的 ID,例如 179 和 179,并检查 NH 以查看它们是否相同,如果不相同,则 return 计数。
CheckValue = DCount([ID], "vTestQuery", "[NH] <> '" & [NH] & "'" And "[ID] ='" & [ID] & "'")
如果 CheckValue 有实际值,这会为我设置的条件格式提供 Me.txtColor 的值。
If (CheckValue > 0) Then
Me.txtColor = CheckValue
我还需要它遍历报告中的所有记录并计算每个具有不同 NH 的匹配 ID,以便我可以标记不同的 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 来显示查询如何将每个 214 ID 注册为不同的,因为不同的 NoteH。
结果如下:
+-----+------------+---------+
| 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;
使用聚合查询和条件格式
创建单独的查询以获取每个 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
上面的这些查询只是从头开始编写的,因此未经测试,您需要为您的项目充实它们。
参考资料: