以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  自动保存被修改了的行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27780)

--  作者:410109296
--  发布时间:2013/1/9 22:32:00
--  自动保存被修改了的行
我做了一个表,放到mssql数据库中,现在有100多人同时操作,每增加一行就自动保存,我设置完了。可是每有一行数据被修改,换行后就自动保存,没有办法实现。100多人,几万行数据,都是远程操作,定时保存、批量保存都不现实,最佳方案就是每变动一行就保存,没变动就不保存,我的网速都不好,读几万行要20多秒钟还可以等,可向数据库写一万行数据,就要用40多分钟,多人操作,容易出现集体闲置时间和集体都想保存数据的问题,所以我想到了判断行是否被修改了,修改了就马上保存,这样就是随时小量保存,不影响整体了,可是没有找到行被修改了且没有被保存这个属性,行号变样色都是通过样式实现的,也没有代码,所以想请教,如何实现自动保存被修改了的行到远程服务器的代码。
--  作者:有点甜
--  发布时间:2013/1/9 22:36:00
--  

参考示例二:

 

http://www.foxtable.com/help/topics/0645.htm

 


--  作者:410109296
--  发布时间:2013/1/9 22:39:00
--  
这个事例我知道,那是换行就保存,不论是否被修改了,这么做会浪费许多服务时间的吧
--  作者:有点甜
--  发布时间:2013/1/9 22:43:00
--  

不存在这个问题,如果这行没有编辑过,你执行Save,系统也不会执行任何操作。


--  作者:明丰
--  发布时间:2013/1/9 23:03:00
--  

这样行不?

\'选择不同的单元格后执行 AfterSelChange
If e.OldRange.RowSel <> e.NewRange.RowSel Then \'如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) \'获得原来选择的行
        If r.DataRow.RowState = DataRowState.Modified Then \'换行时保存修改行
            r.Save() \'保存之
        ElseIf r.DataRow.RowState = DataRowState.Added Then \'换行时保存新增行
            r.Save() \'保存之
        End If
    End If
End If


--  作者:lin_hailun
--  发布时间:2013/1/10 9:07:00
--  
 对于table的save方法,在准备写入数据库之前,会和最近一次保存的原始值作比较,然后再决定是否更新到数据库的,所以不必担心。