以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论][狐爸请进]关于独占式编辑例子,是否没有考虑保存数据表后也要清楚编辑者列?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=48078)

--  作者:737182811
--  发布时间:2014/3/22 16:16:00
--  [讨论][狐爸请进]关于独占式编辑例子,是否没有考虑保存数据表后也要清楚编辑者列?
实际在开发过程中,发现在保存项目(菜单的save按钮)的时候,编辑者列的内容没有清楚,难道别人就一直不能编辑了?除非该用户退出系统?
--  作者:Bin
--  发布时间:2014/3/22 16:19:00
--  
你是不是漏了这个步骤

5、将表事件BeforSaveDatarow代码设置为:

If e.DataRow.RowState = DataRowState.Added Then \'如果是新增行
    e.DataRow("编辑者") = Nothing

Else

    Dim cmd As New SQLCommand
    cmd.CommandText = "Update {员工} Set 编辑者 = Null Where [_Identify] = " & e.DataRow("_Identify")
    If cmd.ExecuteNonQuery = 1 Then
        e.DataRow("编辑者") = Nothing
    End If

End
 If


--  作者:737182811
--  发布时间:2014/3/22 16:26:00
--  
没有漏啊。
--  作者:Bin
--  发布时间:2014/3/22 16:29:00
--  
那就是未保存意外关闭程序了,或者是系统崩溃了,电脑突然关机了,才会卡住.

自己看2楼代码,保存时会清空的哦.

--  作者:737182811
--  发布时间:2014/3/22 16:33:00
--  
我也觉得奇怪呢,继续排查。试验了命令窗口用代码保存行,数据是保存了,但就是没有清除。
[此贴子已经被作者于2014-3-22 16:32:52编辑过]

--  作者:Bin
--  发布时间:2014/3/22 16:36:00
--  
呵呵,不会的呢. 你看看是否有执行到这个事件,调试一下即可知道.
--  作者:lsy
--  发布时间:2014/3/22 16:41:00
--  

独占编辑,弄的不好,会造成频繁死锁。

在业务流程上,尽量让大家各干各的,虽然多人同时操作,但互不相干。


--  作者:737182811
--  发布时间:2014/3/22 16:42:00
--  
调试了一下,对于新增行,该代码是有效的,但是如果是别的行,就不会清除。
If e.DataRow.RowState = DataRowState.Added Then \'如果是新增行
    e.DataRow("编辑者") = Nothing
Else
    Dim cmd As New SQLCommand
    cmd.CommandText = "Update {任务追踪表} Set 编辑者 = Null Where [_Identify] = " & e.DataRow("_Identify")
    If cmd.ExecuteNonQuery = 1 Then
        e.DataRow("编辑者") = Nothing
    End If
End If
就改了一下表名,其他都没动

--  作者:737182811
--  发布时间:2014/3/22 17:22:00
--  
晕死了,原来问题出在这里,看来代码不能随便copy后组合在一起啊 。把这段代码放到后面去就好了。
bin版有啥办法避免此类问题????

\'---网络环境下的复杂编号2-2-------------注意return语句
Dim dr As DataRow = e.DataRow
Dim pf As String
If dr.RowState <> DataRowState.Added Then \'如果不是新增行
    Return \'那么返回


--  作者:Bin
--  发布时间:2014/3/22 17:23:00
--  
放到后面去啊.