我对Access查询的编码知之甚少,所以我希望有人可以帮助解决这个问题。
我有一个查询(使用查询构建器),其中有一个名为RetrainInterval
的字段来自表tblProcedures
(这将返回一个数字,如1,3,6,12等;特定的旋转月份必须重新训练文档)和表Training/Qualification Date
中名为tblTrainingRecords
的另一个字段。
我希望查询查看给定记录的RetrainInterval
(ClassID
中的记录字段为tblProcedures
),然后查看Training/Qualification Date
并计算是否记录应该在查询中。
在模块中,我会这样做:
IF RetrainInterval = 1 Then
DateAdd("m",1,[Training/Qualification Date]) <add to query if <=today()+30>
ElseIf RetrainInterval = 3 Then
DateAdd("m",3,[Training/Qualification Date]) <add to query if <=today()+30>
ElseIF......
如何将其转换为可在查询中使用的内容?我的最终目标是生成一个报告,该报告将向我显示在指定的时间间隔内到期的文档类号(例如,我在表单文本框中输入30表示在查询后30天内即将进行的所需培训),但所有确定这一点的计算是基于上次训练日期的时间(存储在训练记录表中)。我还想确保我没有为同一个班级编号获得多个回报,因为每个班级都会有多个培训条目,只需抓住最后一个培训日期。我希望我解释得很好。在没有提出整个数据库的情况下,很难将其写入我想要做的事情。
更新
我想在休息之后我已经简化了一点。这是两个图像,一个是当前查询,一个是报告中出现的图像。我已经能够改进这一点,但现在我的问题是我只希望特定的类在报告上显示一次,而不是两次,即使我有多个重新训练到期日(因为一切都在看着持有员工培训数据,并将针对每个班级编号进行多次培训。我想只显示一个日期,最老的。希望这是有道理的。
答案 0 :(得分:2)
当 RetrainInterval = 1时,您将 [培训/资格日期] 添加1个月。
当 RetrainInterval = 3时,您将 [培训/资格日期] 添加3个月。
等等。
模式似乎是 RetrainInterval 是要添加的月数。如果确实如此,请直接在DateAdd()
表达式中使用 RetrainInterval ,不要担心IF THEN
。
DateAdd("m", RetrainInterval, [Training/Qualification Date])
答案 1 :(得分:1)
您无法在查询中执行此操作。在那里,被诅咒!
你可以使用IFF(2&gt; x; 1; 0) 如果第一个语句为真,则返回1,返回0,如果为false则返回0。 你不能返回像IFF这样的标准(2&gt; x; Cell&gt; 2; Cell&gt; 0)(不可能)如果你尝试的话它会返回0,我想。它不会一直出错。
你必须使用标准! 我会像这张照片:
我希望你关注,否则让我知道。