但我测试为什么会死循环叱?prepare的代码如下:
If e.IsFocusCell Then
'---独暂式编辑用,进入编辑状态时判断当前行是否有人编辑,没有则写入编辑者锁定当前行
If e.Table.Name.StartsWith(Mtb & "_") Then '仅对有编辑者列的表
Dim t As Table = e.Table
'获取父行,父表名称
Dim pr As DataRow
If e.Table.Name = Mtb & "_主表" Then
pr = e.Row.DataRow
Else
pr = DataTables(Mtb & "_主表").Find(Rcol & "='" & e.Row(Rcol) & "'")
End If
If e.Row.DataRow.RowState = DataRowState.Added OrElse pr("sys_Editor") = MyName Then '如果是新增行
Return
End If
'---将后台表中编辑者赋值成功后操作表中也同样标识上
Dim cmd As New SQLCommand
cmd.connectionName = Mydata
Dim exp As String = "sys_Editor Is Null And [_Identify] = " & pr("_Identify") & " And sys_Fbh = " & pr("sys_Fbh") '加入流程编号防止多人同时加载相同数据重复处理
cmd.CommandText = "Update {" & Mtb & "} Set sys_Editor = '" & MyName & "' Where " & exp
If cmd.ExecuteNonQuery = 1 Then
pr("sys_Editor") = MyName '将当前操作表编辑者也同样赋值
Else
cmd.CommandText = "Select sys_Editor From {" & Mtb & "} Where [_Identify] = " & pr("_Identify") & " And sys_Fbh = " & pr("sys_Fbh")
Dim nm As String = cmd.ExecuteScalar
If nm > "" Then
If Forms("窗口1").Opened = False Then
Forms("窗口1").Open
'MessageBox.show(nm & "正在编辑本单,请稍后再试!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
Else
If Forms("窗口1").Opened = False Then
Forms("窗口1").Open
'MessageBox.show("此行已经被其他用户优先处理了,请刷新或重新加载后再操作!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
End If
e.Cancel = True '取消编辑
End If
End If
End If
弹出窗口1后一旦关闭它马上又打开窗口1了。除非先不要关闭它,移动到其他没有人编辑的行上再关闭就不会,但这样操作似乎也不符合常规啊
[此贴子已经被作者于2014-7-1 12:07:52编辑过]