以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教老师保存效率问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89172) |
-- 作者:zhy400137 -- 发布时间:2016/8/16 16:51:00 -- 请教老师保存效率问题 批量对锁定后的行添加标记并保存的代码 批量对锁定的行添加标记 For Each r As Row In Tables("预算填写").GetCheckedRows If r.Locked=True r("财务审核")="财锁" End If Next 这一步效率还行,但一保存就很慢,数据量一次大约在几千行。 保存代码 DataTables("预算填写").save BeforeSaveDataRow事件代码 Dim dr As DataRow = e.DataRow If dr.Isnull("部门ID") Or dr.Isnull("期间") Or dr.Isnull("费用金额") Then e.Cancel=True MessageBox.show("至少要填入部门ID,期间和费用金额!","提示") Else Dim dr1 As DataRow = DataTables("修改日志").AddNew dr1("预算填写ID") = dr("ID") dr1("用户ID") = _UserName dr1("用户名称") = _UserXm dr1("修改时间") = Date.Now dr1("表名")= "预算填写" dr1("列名") = "费用金额" dr1("原数值")= dr.OriginalValue("费用金额") dr1("现数值") =dr("费用金额") dr1.save End If 请教老师,如何能更高效率 |
-- 作者:zhy400137 -- 发布时间:2016/8/16 16:58:00 -- 顶一下! |
-- 作者:zhy400137 -- 发布时间:2016/8/16 17:01:00 -- 是否是因为曾加修改日志的代码代来的影响! |
-- 作者:大红袍 -- 发布时间:2016/8/16 17:06:00 -- 以下是引用zhy400137在2016/8/16 17:01:00的发言:
是否是因为曾加修改日志的代码代来的影响!
你把 BeforeSaveDataRow 的代码删掉,保存一次。
如果你的是外部数据源,几千行数据保存,慢是肯定的。这是foxtable保存的问题。 |
-- 作者:zhy400137 -- 发布时间:2016/8/16 17:09:00 -- 删除一样慢,那是否能优化? |
-- 作者:zhy400137 -- 发布时间:2016/8/16 17:22:00 -- 求解 |
-- 作者:大红袍 -- 发布时间:2016/8/16 17:32:00 -- 外部数据源,几千行数据,慢,很正常。 |
-- 作者:zhy400137 -- 发布时间:2016/8/16 17:41:00 -- For Each r As Row In Tables("预算填写").GetCheckedRows If r.Locked=True ("财务审核")="财锁" End If Next DataTables("预算填写").SQLReplaceFor("财务审核","财锁","_Locked=\'1\'") DataTables("预算填写").load(False) 这几行代码能揉在一起不?
|
-- 作者:zhy400137 -- 发布时间:2016/8/16 17:42:00 -- 发现后台替换再加载要快很多,但如果能对选定行操作,且再加载表后,还是原来的选定行 |
-- 作者:大红袍 -- 发布时间:2016/8/16 17:49:00 --
Dim idxs As String = "-1,"
|