Foxtable(狐表)用户栏目专家坐堂 → 独占式编辑的操作时报错


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

主题:独占式编辑的操作时报错

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


加好友 发短信
等级:童狐 帖子:213 积分:2228 威望:0 精华:0 注册:2012/2/3 14:14:00
独占式编辑的操作时报错  发帖心情 Post By:2013/3/9 15:42:00 [只看该作者]

独占式编辑的操作时报错,由于已是在运作的系统,不方便上传文件,狐爸能否指点一下。


我确认“入账报表”是存在的也名称和拼写没有错。


报错内容:


 

错误所在事件:

详细错误信息:

System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎找不到输入表或查询 '~TMPCLP入账报表'确定它是否存在,以及它的名称的拼写是否正确。

   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)

   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)

   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)

   at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)

   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)

   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()

   at Foxtable.SQLCommand.ExecuteNonQuery()



录入的代码如下:

 

1、首先给入账报表增加一个字符列,名为"编辑者


2、在项目事件AfterOpenProject设置代码:

'解锁非正常退出时被锁定的记录
DataTables("入账报表").ReplaceFor("编辑者",Nothing,"编辑者 = '" & User.Name & "'")
DataTables("入账报表").Save()
Tables("入账报表").Cols.Remove("编辑者") '移除编辑者列,避免用户直接修改此列

 

3、将表事件StartEdit代码设置为:

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
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
    e.Cancel = True '取消编辑
End If


4、将表事件DataRowAdding代码设置为:

e.DataRow("编辑者") = User.name


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

If e.DataRow.RowState = DataRowState.Added Then '如果是新增行
    e.DataRow("编辑者") = Nothing
Else
    Dim cmd As New SQLCommand
    Dim exp As String  = "[_Identify] = " & e.DataRow("_Identify")
    cmd.CommandText = "Update {入账报表} Set 编辑者 = Null Where [_Identify] = " & e.DataRow("_Identify")
    If cmd.ExecuteNonQuery = 1 Then
        e.DataRow("编辑者") = Nothing
    End If
End If


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/9 15:46:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:童狐 帖子:213 积分:2228 威望:0 精华:0 注册:2012/2/3 14:14:00
  发帖心情 Post By:2013/3/9 16:01:00 [只看该作者]

外部表,设置

 

[此贴子已经被作者于2013-3-10 1:59:32编辑过]

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/9 16:06:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/3/9 16:06:00 [只看该作者]

用户已被锁定

 回到顶部