以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  排序的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=104784)

--  作者:zhangchi96
--  发布时间:2017/8/4 22:24:00
--  排序的问题
在一个窗体中插入了多个表,表1 表2 表3 表4 。。。。 都绑定了“在职职工”,其中表4是作为副本
插入一个按钮控件,执行代码如下
(其中CurrentY:当前年  ,CurrentM:当前月)

Dim 退休预报男 As Integer,退休预报女工 As Integer,退休预报女专 As Integer
退休预报男 = ( CurrentY - Vars("男退休年龄") +1 ) * 100 + CurrentM
退休预报女工 = ( CurrentY - Vars("女工退休年龄") +1 ) * 100 + CurrentM
退休预报女专 = ( CurrentY - Vars("女专退休年龄") +1 ) * 100 + CurrentM
Tables("在职职工窗体_表4").Filter = " ( 性别 = \'男\' And 出生年月 <= \'" & 退休预报男 & "\' ) Or ( 个人身份 <> \'技术工人\' and 性别 = \'女\' And 出生年月<= \'" & 退休预报女专 & "\') Or ( 个人身份 = \'技术工人\' And 性别 = \'女\' And 出生年月 <= \'" & 退休预报女工 & "\')"
Tables("在职职工窗体_表4").sort = "个人身份,性别,出生年月"

但这样排序会出现一个小问题,排序结果举例:(为了看清排序,用颜色区分男女)
1  职工01  男  195707
2  职工02  男  195708
3  职工03  男  195709
4  职工04  男  195710
5  职工05  女  196207
6  职工06  女  196208
7  职工07  女  196209
8  职工08  女  196210

但我需要的结果应该是:
   (因为这样,前两个才是接近7月份办理退休的人员)
1  职工01  男  195707
2  职工05  女  196207
3  职工02  男  195708
4  职工06  女  196208
5  职工03  男  195709
6  职工07  女  196209
7  职工04  男  195710
8  职工08  女  196210

请问,不增加辅助列,如果能做到呢?



--  作者:有点蓝
--  发布时间:2017/8/4 23:09:00
--  
做不到
--  作者:zhangchi96
--  发布时间:2017/8/6 21:07:00
--  
最终我还是加了个辅助列:预测退休_年月
--  作者:有点甜
--  发布时间:2017/8/6 21:25:00
--  
是的,需要加辅助列。所有特殊的排序,都需要加上排序辅助列。