以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何自动排序  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187132)

--  作者:moseser
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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