在Access 2010查询中使用IF THEN

时间:2015-01-29 05:37:48

标签: sql database ms-access

我对Access查询的编码知之甚少,所以我希望有人可以帮助解决这个问题。 我有一个查询(使用查询构建器),其中有一个名为RetrainInterval的字段来自表tblProcedures(这将返回一个数字,如1,3,6,12等;特定的旋转月份必须重新训练文档)和表Training/Qualification Date中名为tblTrainingRecords的另一个字段。

我希望查询查看给定记录的RetrainIntervalClassID中的记录字段为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天内即将进行的所需培训),但所有确定这一点的计算是基于上次训练日期的时间(存储在训练记录表中)。我还想确保我没有为同一个班级编号获得多个回报,因为每个班级都会有多个培训条目,只需抓住最后一个培训日期。我希望我解释得很好。在没有提出整个数据库的情况下,很难将其写入我想要做的事情。

更新

我想在休息之后我已经简化了一点。这是两个图像,一个是当前查询,一个是报告中出现的图像。我已经能够改进这一点,但现在我的问题是我只希望特定的类在报告上显示一次,而不是两次,即使我有多个重新训练到期日(因为一切都在看着持有员工培训数据,并将针对每个班级编号进行多次培训。我想只显示一个日期,最老的。希望这是有道理的。

查询 - http://postimg.org/image/cpcn998zx/

报告 - http://postimg.org/image/krl5945l9/

2 个答案:

答案 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,我想。它不会一直出错。

你必须使用标准! 我会像这张照片: Example

我希望你关注,否则让我知道。