1

我有一个三列表,JobStatus、DeliveryDate、JobSize

我想按 JobStatus (A | B | C) 然后 DeliveryDate (最快在前)然后 JobSize (最大在前)订购未来 5 天内到期的工作。5 天后,然后仅按 JobDate 订购。

第一部分的 OrderBy 如下,

Me.ScheduleForm.Form.OrderBy = "[JobStatus], [DeliveryDate], [JobSize] DESC"

但是,对于 DeliverDate > 5 days away 的非紧急工作,您将如何合并 OrderBy 条款的更改?

这是我想在伪代码中执行的操作:

Me.ScheduleForm.Form.OrderBy = "if ([DeliverDate] - [Today] < '5 days')
then ([JobStatus], [DeliveryDate], [JobSize] DESC)
else ([DeliveryDate]) "

4

1 回答 1

2

听起来您需要构建一个可以按 ASCending 排序并涵盖两种情况的字符串。一般形式将类似于

IIf(DateDiff("d", Date(), [DeliveryDate]) <= 5, StringExpression1 , StringExpression2 )

其中StringExpression1将以“A”开头(因此它们排在第一位)并包括所有字段...

"A" & [JobStatus] & Format([DeliveryDate], "yyyy-mm-dd") & Format(999999 - [JobSize], "000000")

...并且StringExpression2将以“B”开头(因此它们排在最后)并且仅包含 [DeliveryDate] 以及其他字段的常量占位符...

"B" & " " & 格式([交货日期], "yyyy-mm-dd") & "000000"

于 2013-09-08T21:34:14.440 回答