Foxtable(狐表)用户栏目专家坐堂 → 如何返回保存是否成功?


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

主题:如何返回保存是否成功?

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
如何返回保存是否成功?  发帖心情 Post By:2012/12/20 14:24:00 [只看该作者]

各位老师,

 

当我在传递工作流时,根据“状态”列的是否为完成来锁定数据行,但保存时因为其他列有些数据没有填写未能保存,但此时行已经变成锁定的了,要如何判断如果没有保存成功则取消刚才锁定的行?

 

谢谢!


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/20 15:05:00 [只看该作者]

 我想知道你的其他数据是怎么保存的,为什么没有保存成功?

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2012/12/20 15:28:00 [只看该作者]

下面是流程传递窗口确定按钮的代码:

 

Else '如果是最后一个流程
    CurrentTable.Current("sys_流程状态") = "已完成"
    Syscmd.Row.Lock() '锁定此行
End If
CurrentTable.Current("sys_传递说明") = tx4.Value
CurrentTable.Current.Save() '保存当前行
CurrentTable.Current.Remove '移除当前行
e.Form.Close()

 

以下是表中BeforeSaveDataRow代码:

 

'保存前检查不允许为空的列(因为下面这三项可能没填写所以就保存不了)
Dim ss() As String = {"入库单号","入库类别","仓库"}
For i As Integer = 0 To ss.Length - 1
    If e.DataRow.IsNull(ss(i))
        MessageBox.Show("''" & ss(i) & "''不能为空!")
        '查找为空的字段并将焦点定位到此行
        Dim Index As Integer
        Index = Tables("入库单").FindRow(e.DataRow) '找出此行在数据Table中的位置
        If Index > -1 Then '如果找到此行
            Tables("入库单").Position = Index
        End If
        MainTable = Tables("入库单")
        e.Cancel = True

 CurrentTable.Current("sys_流程状态") = "待处理"
Syscmd.Row.UNLock() '锁定此行

        Exit For
    End If
Next

 

我现在在上面加了两行红色的,这样是不是就可以实现如果保存不成功就把值改变成初始的状态?

谢谢!


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/20 15:38:00 [只看该作者]

 嗯嗯,这样可以。不过有一种可能是,保存进数据库的时候,数据库报错,导致数据没有写入,这种情况暂时无法避免的。

 楼主先这样弄,可以满足需要的。

 回到顶部