【问题标题】:Count Records X of Y across Records on Form在表单上的记录中计算 Y 的记录 X
【发布时间】:2017-05-21 06:05:17
【问题描述】:

我有一个表单,其中包含字段 StudentID、StartDate、TxDate(治疗日期)以及 c.60 其他字段。 表单标题中有一个 Go To Student 下拉框,仅当从下拉列表中选择特定 StudentID 时,它才会为 StudentID 所选记录建立子集。

有按钮可以点击到第一个、上一个、下一个、最后一个

我想在表单上显示,当您单击“第一个”、“上一个”、“下一个”或“最后一个”,然后转到“下一个”记录,即该个人 StudentID 的编号记录。也就是说,如果学生有 6 条记录,则其第一条记录将显示 6 条中的 1 条,下一条记录为 6 条中的 2 条,下一条为 6 条中的 3 条......

我尝试过诸如 DCount('RecordNo","Depression Form Query","Student") 之类的方法,它计算数据表中的所有记录,而不仅仅是单个 StudentID。

我在学生表中使用了自动编号,但它生成的数字相当于输入的第三个学生的 StudentID,而不是他们治疗日期的计数。

我尝试了在网上找到的各种循环,但它们不计入同一学生的记录。

我制作了 X of Y 报告,然后将其拖放到表单中。它生成正确的 Y (6) 但不正确的 X。

[]

抑郁表查询基于学生表和抑郁表。

【问题讨论】:

  • 请理解,我计算的是跨表单(记录),而不是在同一记录中。 StudentID = 8131999,Form's Record No = 356(计数为“1”),单击我在我的 Form 上编程的 Next 按钮将我带到 StudentID 8131999 的另一个实例,Form's Record No = 461(计数为“2”) ,单击我在表单上编写的下一步按钮将我带到另一个实例,学生 ID = 8131999,表单的记录号 = 826(计数为“3”)等。谢谢

标签: ms-access ms-access-2007


【解决方案1】:

我知道您想计算记录。 Allen Browne 链接正在讨论计数记录。

您的 DCount() 必须是:

DCount("*","[Depression Form Query]","StudentID=" & [StudentID] & " AND RecordID < " & [RecordID]) + 1

刚刚意识到 Allen Browne 链接并没有真正为此使用 DCount,只是几乎没有提及它以告知它可能非常慢。也可以。

如果将过滤条件应用于查询,则必须在 DCount() WHERE 参数中构造相同的过滤条件。

在分组中排名的嵌套查询甚至比链接中的示例更复杂。

表单并不是这种计算的实用工具。最好使用其 Grouping & Sorting 功能和文本框 RunningSum 属性来构建报告。

【讨论】:

  • 您好,感谢 Paul R. 的回复。我尝试了您提供的 DCount 语句;我必须添加一个“=”符号。它计算了所有特定学生的记录(Y 中的 X 中的“Y”)+1(即 7)。当您从一个记录单击到下一个 对于相同的 StudentID 时,我在 X of Y 记录的“X”之后发生变化(1、2、3...)。我曾尝试制作报告并将其拖到表单中。该报告的查询是我在上面发布的。它为 StudentID 8131999 生成 6 条记录(Y 中 X 中的正确“Y”)。
  • 糟糕,我忘记在 DCount 条件中包含唯一 ID 字段。请参阅修改后的答案。
  • 您好 Paul R,我尝试了您修改后的 DCount 语句。当我运行查询时,它要求我输入 ID。我没有名为 ID 的字段,只有 StudentID 和 ST_ID。谢谢,万斯
  • 您需要表中的一个字段,该字段可用作 DCount 中每个学生组的排序标准。也许那将是 RecordNo 字段,但如果不是名为 ID 的自动编号字段,则应该提供服务。再次修改代码。
  • 您好 Paul R,感谢您一直以来的努力。我尝试了您的 DCount 语句,但它只会返回数字 1,无论记录如何。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多