我正在使用个人数据库来跟踪我的项目。
我在查询中以升序排序的表中有一个日期/时间列,名为StartDate
,该查询用作输入数据的表单的数据源。
该表单是一个拆分表单,以表格格式显示“详细信息”部分中的数据。
到目前为止,我已经输入了分配的项目,但是现在我还需要跟踪将要分配但尚未分配的常见项目。
要对此进行跟踪,我想输入没有开始日期的未来项目。
但是,当我输入这样的记录时,它们将排在顶部,而不是我喜欢的列表的底部。
是否有任何方法可以覆盖排序,以便StartDate
列中具有值的记录以升序排列,但是StartDate
列中没有值的记录将在末尾排序? / p>
谢谢!
答案 0 :(得分:6)
如果您在日期字段上进行任何计算,则将失去对该索引的使用。
因此请检查空:
SELECT
startdate, id
FROM
YourTable
ORDER BY
StartDate Is Null,
StartDate
答案 1 :(得分:1)
一种可能是这样排序:
ORDER BY Nz([StartDate], CDate("31.12.2999"))
此处,函数NZ
用于将Null值(“仅在查询中”在运行中)转换为日期31.12.2999
,因此可以根据需要进行排序。
答案 2 :(得分:0)
您可以创建一个计算字段来排序数据。
我用日期创建了一个简单的表(名为tbl
),其中一些带有空格:
如您所见,ID为4,5和9的行在StartDate
中为空白
然后,我用一个计算字段组成了查询,该查询将检查字段StartDate
不是是否为空白。如果为true,则返回0,如果为false,则返回1。这样,所有空白Startdate
行将返回1,非空白行将返回0。然后按此计算字段进行排序,然后按StartDate
进行第二次排序。字段。
计算字段的公式为:IIf(IsNull([StartDate])=False,0,1)
查询的SQL代码为:
SELECT tbl.startdate, tbl.id
FROM tbl
ORDER BY IIf(IsNull([StartDate])=False,0,1), tbl.startdate
我得到这个作为输出:
如您所见,ID为4,5和9的行在StartDate
中为空白,位于记录集的底部。
希望您可以根据自己的需要对此进行调整。