Foxtable(狐表)用户栏目专家坐堂 → [讨论][狐爸请进]关于独占式编辑例子,是否没有考虑保存数据表后也要清楚编辑者列?


  共有3773人关注过本帖树形打印复制链接

主题:[讨论][狐爸请进]关于独占式编辑例子,是否没有考虑保存数据表后也要清楚编辑者列?

帅哥哟,离线,有人找我吗?
737182811
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:246 积分:1775 威望:0 精华:0 注册:2013/12/22 14:54:00
[讨论][狐爸请进]关于独占式编辑例子,是否没有考虑保存数据表后也要清楚编辑者列?  发帖心情 Post By:2014/3/22 16:16:00 [只看该作者]

实际在开发过程中,发现在保存项目(菜单的save按钮)的时候,编辑者列的内容没有清楚,难道别人就一直不能编辑了?除非该用户退出系统?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:246 积分:1775 威望:0 精华:0 注册:2013/12/22 14:54:00
  发帖心情 Post By:2014/3/22 16:26:00 [只看该作者]

没有漏啊。

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/22 16:29:00 [只看该作者]

那就是未保存意外关闭程序了,或者是系统崩溃了,电脑突然关机了,才会卡住.

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

 回到顶部
帅哥哟,离线,有人找我吗?
737182811
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:246 积分:1775 威望:0 精华:0 注册:2013/12/22 14:54:00
  发帖心情 Post By:2014/3/22 16:33:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/22 16:36:00 [只看该作者]

呵呵,不会的呢. 你看看是否有执行到这个事件,调试一下即可知道.

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/3/22 16:41:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
737182811
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:246 积分:1775 威望:0 精华:0 注册:2013/12/22 14:54:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:246 积分:1775 威望:0 精华:0 注册:2013/12/22 14:54:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/22 17:23:00 [只看该作者]

放到后面去啊.

 回到顶部
总数 12 1 2 下一页