Foxtable(狐表)用户栏目专家坐堂 → 如何自动排序


  共有3754人关注过本帖树形打印复制链接

主题:如何自动排序

帅哥哟,离线,有人找我吗?
moseser
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
如何自动排序  发帖心情 Post By:2023/6/25 14:58:00 [只看该作者]

比如有一个表A,有如下几列

日期                   序号
2022-06-12        1
2022-06-15        2
2022-06-18        3
2022-06-20       4


当插入一个2022-05-01 时,其序号自动拍在最前面,为1,同时其他各序号自动变化

如果插入2022-06-19 ,其序号自动为4,其6月20变为5



[此贴子已经被作者于2023/6/25 15:00:06编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/6/25 15:11:00 [只看该作者]

处理步骤
1、使用find搜索比当前行日期值(比如2022-05-01)小的其中日期值最大的行,http://www.foxtable.com/webhelp/topics/0396.htm
2、如果搜索没有结果,就把当前行序号赋值1,然后遍历剩下的行,全部赋值+1
3、如果有结果,把搜索结果的序号+1给当前行序号,使用select获取比当前行日期值大的行,然后遍历赋值+1

datacolchanged

if e.datacol.name = "日期"
dim dr as datarow = e.datatavble.find("日期 < #" e.newvalue "#","日期 desc")
if dr is nothing then
e.datareow("序号") = 1
dim idx as integer = 1
for each dr2 as datarow = e.datatavble.select("日期 > #" e.newvalue "#","日期")
idx +=1
dr2("序号") = idx 
nexct
else
e.datareow("序号") = dr("序号") + 1
dim idx as integer = e.datareow("序号")
for each dr2 as datarow = e.datatavble.select("日期 > #" e.newvalue "#","日期")
idx +=1
dr2("序号") = idx 
nexct
en dif


 回到顶部