如何实现StartDate列升序排序且NULL值置于列表末尾?
调整Access拆分表单的排序规则:空StartDate记录排末尾
我之前也碰到过类似的需求,在Access里要让空值排在排序结果的末尾其实很灵活,给你两种实用的解法,都能完美解决你的问题:
方法一:新增计算字段分组排序
这种方法逻辑清晰,容易理解和维护:
- 打开作为表单数据源的查询,进入设计视图
- 在查询设计网格的空白字段行,输入以下表达式:
SortPriority: IIf(IsNull([StartDate]), 2, 1)
这个字段会给有StartDate的记录标记为1,空值记录标记为2 - 给
SortPriority字段设置升序排序,然后再给StartDate字段设置升序排序 - 如果不想在表单里显示这个计算字段,可以右键点击字段列,选择隐藏列
- 保存查询,回到拆分表单刷新数据,就能看到有日期的记录按StartDate升序排列,空值记录全部排在最后
方法二:直接在排序规则里替换空值
如果不想新增字段,可以直接修改StartDate的排序逻辑:
- 同样打开查询的设计视图
- 在
StartDate字段的排序行,输入以下表达式:IIf(IsNull([StartDate]), DateSerial(9999,12,31), [StartDate])
这个逻辑会把空的StartDate替换成一个极远的未来日期(9999年12月31日),自然就会排在所有真实日期的后面 - 保存查询后刷新表单,效果和方法一完全一致
这两种方法都不需要修改表单本身,只需要调整数据源查询的排序规则就可以了,操作起来都很简单,你可以根据自己的习惯选一种就行~
内容的提问来源于stack exchange,提问作者user2063351




