以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]CaseStudy:"独占式编辑二"及帮助文档有误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27644)

--  作者:ibehujun
--  发布时间:2013/1/6 21:20:00
--  [求助]CaseStudy:"独占式编辑二"及帮助文档有误

狐爸及各位高手,您好,

 

今天在借用帮助文档的代码搭建系统时,发现CaseStudy:"独占式编辑二"及帮助文档有误

 

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

案例二

 

张三登陆系统,编辑第一行,保存退出后,

李四点击第一行,仍然提示“张三正在编辑”,

 

现在是菜鸟,还不能诊断问题出在哪里,请高手诊断,谢谢。

 

初步估计是保存的按钮并没有将“编辑者”清空,

但在命令窗口测试了,代码可以清空,奇怪了。


--  作者:ibehujun
--  发布时间:2013/1/6 21:20:00
--  
就不上传附件了,直接使用Case Study里面的案例即可
--  作者:狐狸爸爸
--  发布时间:2013/1/7 9:29:00
--  
确实有问题,我们检查一下。
--  作者:狐狸爸爸
--  发布时间:2013/1/7 11:59:00
--  

表的DoubleClick事件增加一行:

 

If e.Row("编辑者") = User.Name Then \'如果编辑者是当前用户
    Return
End If
Dim cmd As New SQLCommand
Dim exp As String  = "编辑者 Is Null And [_Identify] = " & e.Row("_Identify")
cmd.CommandText = "Update {员工} Set 编辑者 = \'" & User.Name & "\' Where " & exp
If cmd.ExecuteNonQuery = 1 Then
    e.Row("编辑者") = User.Name
    e.Row.Save()
    Forms("编辑窗口").Open()
Else
    cmd.CommandText = "Select 编辑者 From {员工} Where [_Identify] = " & e.Row("_Identify")
    Dim nm As String = cmd.ExecuteScalar
    If nm > "" Then
        MessageBox.show(nm & "正在编辑此行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Else
        MessageBox.show("此行可能已经被删除,无法编辑!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
End If


--  作者:ibehujun
--  发布时间:2013/1/7 19:30:00
--  为什么

为什么Form中两个按钮将编辑者设置为Nothing没有起作用呢?

 

百思不得其解,请教一下

 

“保存”

 

Tables("WorkFlow").Current("Editor") = Nothing
Tables("WorkFlow").Current.Save()
e.Form.Close()

 

“撤销”

Tables("WorkFlow").Current.Reject()
Tables("WorkFlow").Current("Editor") = Nothing
Tables("WorkFlow").Current.Save()
e.Form.Close()

 

 

 

 


--  作者:lin_hailun
--  发布时间:2013/1/8 16:35:00
--  
 datatable会记录各个单元格的初始值,如果最后保存的时候,这个值和最初的值一致,就不把值保存回数据库。

--  作者:ibehujun
--  发布时间:2013/1/8 20:02:00
--  

多谢狐爸及Hailun