MS Access新手以及编码和尝试构建IFF语句

时间:2017-10-16 02:30:37

标签: vba ms-access

状态:

IIf([Ongoing]=True,"Ongoing",
   IIf([DueOut]![Completed]=True,"Completed", 
     IIf([DueOut]![Suspense]<Date(),"Overdue",
        IIf(DateDiff("d",Date(),[Suspense])<6,"This Week",
           IIf(DateDiff("d",Date(),[Suspense]) Between 7 And 14,"Next Week","Greater than 2 Weeks", 
               IIf([Suspense]>30,date(),"greater than 30 days")
           )
         )
       )
    )  

我一直在尝试添加“超过30天”的方面遇到错误。

2 个答案:

答案 0 :(得分:2)

请在不能使用CASE函数时嵌套那么多IIF语句。

CASE([Ongoing]=True,"Ongoing",
[DueOut]![Completed]=True,"Completed", 
[DueOut]![Suspense]<Date(),"Overdue",
DateDiff("d",Date(),[Suspense])< 7,"This Week",
DateDiff("d",Date(),[Suspense]) < 14,"Next Week",
DateDiff("d",Date(),[Suspense]) < 30, "Greater than 2 Weeks"
True, "Greater than 30 days")

(还修正了一些语法)

答案 1 :(得分:1)

只是语法错误...你的倒数第二个IIf语句与你编写它的方式有四个参数。看来当你将最后一个IIf卡在那里时,你只是没有将它正确地整合到前一个IIf([Ongoing],"Ongoing", IIf([DueOut]![Completed]=True,"Completed", IIf([DueOut]![Suspense]<Date(),"Overdue", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <6,"This Week", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <14,"Next Week", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <30, "Greater than 2 Weeks", "Greater than 30 days" ) ) ) ) ) ) 中。试试这个:

Ongoing

现在它在语法上有效,但我会质疑你的逻辑。对于尚未到期的项目(本周,下周等),他们也Ongoing?如果是这样,逻辑将永远不会到达“本周/下周”代码部分。它只会返回“正在进行”。如果我误解了如何使用IIf([DueOut]![Completed],"Completed", IIf([DueOut]![Suspense]<Date(),"Overdue", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <6,"This Week", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <14,"Next Week", IIf(DateDiff("d",Date(),[DueOut]![Suspense]) <30, "Greater than 2 Weeks", "Greater than 30 days" ) ) ) ) ) 标志,那么你可能没问题,但是如果 - 通过“持续” - 你想要显示它们何时到期,那么你永远不会希望它返回“正在进行的”。您可能需要“已完成”,“过期”或 到期时的描述。 如果是这种情况(并且我不确定它是否是),那么试试这个:

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.animation.FadeTransition;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.AnchorPane;
import javafx.stage.FileChooser;
import javafx.util.Duration;