我有一个三列表,JobStatus,DeliveryDate,JobSize
我想通过JobStatus(A | B | C)订购,然后是DeliveryDate(首先是最快的),然后是JobSize(最大的第一个),用于在接下来的5天内到期的工作。 5天后,然后只按JobDate订购。
OrderBy的第一部分如下,
Me.ScheduleForm.Form.OrderBy = "[JobStatus], [DeliveryDate], [JobSize] DESC"
但是,如何使用DeliverDate>为非紧急作业添加OrderBy子句的更改? 5天之后?
以下是我想在psuedo代码中做的事情:
Me.ScheduleForm.Form.OrderBy = "if ([DeliverDate] - [Today] < '5 days')
then ([JobStatus], [DeliveryDate], [JobSize] DESC)
else ([DeliveryDate]) "
答案 0 :(得分:2)
听起来你需要构建一个可以对ASCending进行排序并覆盖这两种情况的字符串。一般形式类似于
IIf(DateDiff(“d”,Date(),[DeliveryDate])&lt; = 5, StringExpression1 , StringExpression2 )
其中 StringExpression1 将以“A”开头(因此它们首先出现)并包含所有字段......
“A”&amp; [JobStatus]&amp;格式([DeliveryDate],“yyyy-mm-dd”)&amp;格式(999999 - [JobSize],“000000”)
...和 StringExpression2 将以“B”开头(所以它们最后一个)并且仅包含 [DeliveryDate]包含其他字段的常量占位符...
“B”&amp; “”&amp;格式([DeliveryDate],“yyyy-mm-dd”)&amp; “000000”