以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [讨论] 在表中,正序删除空行方法的探讨 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=153346) |
|
-- 作者:龙潭春早 -- 发布时间:2020/8/7 16:51:00 -- [讨论] 在表中,正序删除空行方法的探讨 在帮助中介绍删除行的时候,要倒序删除。 不得不倒序删除的原因,是由于在正序删除时,后面的行会上移填补刚被删除的行号,而计数器会自动加一而错过了对这刚上移第一行的判断,这样连续下去,会导致删除行的混乱。 而通过倒序删除,解决了上述的这个问题。 只是,在实际的开发中,能够正序地删除行,还是很让人期待。 深入研究发现,既然是计数器的自动加数导致的混乱,那通过修正计数器的自动加数,就应该能够实现正序删除行。 在下面的代码中,通过添加代码 “i = i - 1”,修正了计数器的加数。使得删除空行后计数器不增加计数,反而减数,使得由于删除行而上移上来的新行被遍历列而被判断是否是空行。 下面的代码,经验证实现了正序删除行:
|
|
-- 作者:y2287958 -- 发布时间:2020/8/7 16:53:00 -- 如果仅仅是为了删除空白行,加一个辅助列即可 |
|
-- 作者:有点蓝 -- 发布时间:2020/8/7 17:17:00 -- 我想不出来正序地删除行有什么可让人期待的 |
|
-- 作者:nxhylczh -- 发布时间:2020/8/7 22:11:00 -- dim tbl as table = args(0) \'要删除空行的表 dim Drs as list( of datarow ) = datatable.select (Filter=空行) ‘FIlter 要根据实际情况写for each dr as datarow in drs ft = dr("主键") tbl.datatable.sqldeletefor(ft)
dr.remove next ’第二种删除空行 tbl.datatable.deletefor(filter) :tbl.save 或 tbl.datatable.sqldeletefor(filter) |
|
-- 作者:nxhylczh -- 发布时间:2020/8/7 22:15:00 -- output.show("删除前总行数 i = " & i) dim Count as intter = tbl.rows.count \'删除前的值 output.show("删除的空行数 i3 = " & i3) tbl.datatable.select(空行条件).count output.show("有数据的行数 i4 = " & i4) tbl.datatable.select(非空行条件).count output.show("总列数 = " & t.Cols.Count ) tbl.cols.count output.show("删除后总行数 = " & t.Rows.Count ) tbl.rows.count 你循环计数 就失去了Foxtable的优势了
|
|
-- 作者:龙潭春早 -- 发布时间:2020/8/8 14:47:00 -- 嗯 研究一下 多谢! |