以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  独占式编辑报错是什么原因呢(求助)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29901)

--  作者:baixiaobai
--  发布时间:2013/3/16 5:29:00
--  独占式编辑报错是什么原因呢(求助)
只要编辑一次后,就被锁上再也打不开了,总是提示,开发者正在编辑此行,我用开发者的账户也是一样打不开!
[此贴子已经被作者于2013-3-16 6:35:17编辑过]

--  作者:baixiaobai
--  发布时间:2013/3/16 6:32:00
--  
还是不行`总是被锁上``别的用户怎么也编辑不了了,只要打开编辑窗口一次,再别的用户或者是自己,都死活编辑不了了,就一直提示.开发者正在编辑此行!该怎么办呢
[此贴子已经被作者于2013-3-16 6:33:44编辑过]

--  作者:qq121454970
--  发布时间:2013/3/16 8:17:00
--  
代码贴出来看看,应该是你退出窗口时没有将编辑者列的用户名清空导致的
--  作者:狐狸爸爸
--  发布时间:2013/3/16 8:26:00
--  

你做个例子发上来看看


--  作者:baixiaobai
--  发布时间:2013/3/16 8:31:00
--  
对`就是没有清空,我刚在外部数据表里看了,之前登录的还在上面显示呢


--  作者:baixiaobai
--  发布时间:2013/3/16 8:32:00
--  
If e.Row("编辑者") = User.Name Then \'如果编辑者是当前用户
    Return
End If
Dim cmd As New SQLCommand
cmd.C
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
    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

--  作者:狐狸爸爸
--  发布时间:2013/3/16 8:52:00
--  

1、首先这行改为:

Dim exp As String  = "编辑者 Is Null And [_Identify] = " & e.Row("_Identify")

 

Dim exp As String  = "(编辑者 Is Null Or 编辑者 = \'" & User.Name & "\' And [_Identify] = " & e.Row("_Identify")

 

这样始终提示某个用户正在编辑后,例如提示开发者正在编辑,你就用开发者登陆,可以解锁。

 

2、退出编辑的时候,一定要记得用Update语句将此行编辑者列清空,否则会锁死。

 


--  作者:baixiaobai
--  发布时间:2013/3/16 9:13:00
--  
啊哦~~修改了上段代码后,提示

.NET Framework 版本:2.0.50727.5466
Foxtable 版本:2012.11.29.1
错误所在事件:
详细错误信息:
System.Data.OleDb.OleDbException: \'22\' 附近有语法错误。
   在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   在 Foxtable.SQLCommand.ExecuteNonQuery()

--  作者:狐狸爸爸
--  发布时间:2013/3/16 9:18:00
--  
Dim exp As String  = "(编辑者 Is Null Or 编辑者 = \'" & User.Name & "\') And [_Identify] = " & e.Row("_Identify")