以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [分享]彻底优化独占式编辑终极版---求狐爸给精华 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49366) |
-- 作者:737182811 -- 发布时间:2014/4/16 21:10:00 -- [分享]彻底优化独占式编辑终极版---求狐爸给精华 热度不够啊,来个标题党吧. 经过bin版和俺准女婿甜版的大力指导.对于狐爸独占式编辑作如下改良. 1.解决了在表格编辑模式(相对于窗口录入方式,即原例子1)时,对某行未作任何修改,立即选择另一行时,该行仍然被锁定,不能被别人编辑的问题.大大占用资源哪. 2.解决了上述情况时行状态发生了变化,即使未作任何修改,也会引起行状态变化(由于编辑者列发生了变化),如果保存该行的话,而又设置了代码,记录保存人和保存时间的话,会造成多余的记录,即未修改任何东西,却记录了修改时间和修改人员. 代码原理很简单.就不多说了. \'--------改良独占式编辑 If e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行 If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行 Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) \'获得原来选择的行 Dim i As Integer = 0 For Each c As Col In e.Table.Cols If r.DataRow.OriginalValue(c.name) <> r(c.name) AndAlso c.name<>"编辑者" AndAlso c.name<>"执行次数" Then \'不检查编辑者列和表达式列 i = i+1 End If Next If i = 0 Then r.reject \'恢复行状态 Dim cmd1 As New SQLCommand cmd1.CommandText = "Select 编辑者 From {任务追踪表} Where [_Identify] = " & r.DataRow("_Identify") Dim nm As String = cmd1.ExecuteScalar If nm = user.name Then If r.DataRow.RowState = DataRowState.Added Then \'如果是新增行 r.DataRow("编辑者") = Nothing Else Dim cmd As New SQLCommand cmd.CommandText = "Update {任务追踪表} Set 编辑者 = Null Where [_Identify] = " & r.DataRow("_Identify") If cmd.ExecuteNonQuery = 1 Then r.DataRow("编辑者") = Nothing End If End If End If End If End If End If 忘了说了,代码加在beforeselchange 事件中,选择不同行时候执行判断。
[此贴子已经被作者于2014-4-17 7:50:25编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/4/16 21:26:00 -- 思路很清晰,帮助里的独占编辑是应该改良一下了。 |
-- 作者:zyqzyy -- 发布时间:2014/4/16 21:30:00 -- 顶! |
-- 作者:hanxuntx -- 发布时间:2014/4/16 22:18:00 -- 恭喜准女婿甜版 |
-- 作者:jianjingmaoyi -- 发布时间:2014/4/16 22:28:00 -- 准女婿 啥意思 |
-- 作者:有点甜 -- 发布时间:2014/4/16 22:30:00 -- 以下是引用jianjingmaoyi在2014-4-16 22:28:00的发言:
准女婿 啥意思
大叔我跟楼主1岁的女儿定了亲 |
-- 作者:737182811 -- 发布时间:2014/4/16 22:31:00 -- 意思就是二十载后,甜版会驾着七色云彩来俺家提亲. |
-- 作者:rjh4078 -- 发布时间:2014/4/16 22:51:00 -- 关于独占模式 有个问题比较烦人 如果客户端崩溃 如何解锁? |
-- 作者:737182811 -- 发布时间:2014/4/16 22:55:00 -- 狐爸例子中不是说了嘛,非法退出的情况,有解锁代码的. |
-- 作者:有点甜 -- 发布时间:2014/4/16 22:56:00 -- 以下是引用rjh4078在2014-4-16 22:51:00的发言:
关于独占模式 有个问题比较烦人 如果客户端崩溃 如何解锁?
解锁还是挺简单的,帮助不是介绍了如何解锁么?做一个按钮,把值改一下就行了。 |