以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 隔行保存? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85868) |
||||
-- 作者:czy66ds -- 发布时间:2016/6/4 9:16:00 -- 隔行保存? 发一个项目文件:
窗口1为录入窗口,想实现的功能是不保存空行。假如新增7行,前六行非空,保存后竟然只保存了1、3、5行,不知何故?
|
||||
-- 作者:Hyphen -- 发布时间:2016/6/4 10:59:00 -- Dim tbl As Table = e.Form.Controls("Table3").Table Dim r As Row For Each r In tbl.Rows Dim isnull As Boolean = True For Each c As Col In tbl.Cols If r.IsNull(c.name) = False Then isNull = False Exit For End If Next If isnull Then r.Delete End If Next tbl.DataTable.Save tbl.DataTable.RemoveFor("")
|
||||
-- 作者:czy66ds -- 发布时间:2016/6/4 11:33:00 -- 谢谢,测试通过。 我的代码有什么毛病?
|
||||
-- 作者:jspta -- 发布时间:2016/6/4 11:35:00 --
|
||||
-- 作者:Hyphen -- 发布时间:2016/6/4 15:02:00 -- 二个解决方法,一是循环改为DataTable的DataRow,二是窗口表的sel ect语句加上_SortKey,如sel ect [_Identify],[_SortKey],第一列,第二列 from {表A} where 1=2 窗口表没有_SortKey,table是属于排序表,默认是按照_SortKey排序的,如果没有_SortKey则按照_Identify排序,保存时由于_Identify会更新为数据库实际的最大值,导致保存后的这行跑到了table表的最后,因此for each 的顺序就乱了,所以双数行就保存不到。而 DataTable顺序不会改变,因此不会有这个问题。测试中去掉这句代码CurrentTable.DataTable.RemoveFor("")就可以看到效果了 Dim tbl As Table = e.Form.Controls("Table3").Table Dim r As DataRow For Each r In tbl.DataTable.DataRows Dim isnull As Boolean = True For Each c As Col In tbl.Cols If r.IsNull(c.name) = False Then isNull = False Exit For End If Next If isnull = False Then r.Save End If Next \'CurrentTable.DataTable.Save CurrentTable.DataTable.RemoveFor("") |