Foxtable(狐表)用户栏目专家坐堂 → 事务报错,如何处理?


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

主题:事务报错,如何处理?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
事务报错,如何处理?  发帖心情 Post By:2024/9/29 16:07:00 [只看该作者]

需求:如果表A 分组是经理或总经理,表A的审核 = '已审核',审核人 = _Name,审核日期 = Date.Today(),表B的当前数量 = 当前数量+表A.数量,否则,提示("你无审核权限!") '否则,提示无审核权限,'回滚事务。
附件中代码报错,如果解决?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建 文本文档 (3).zip



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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/29 17:11:00 [只看该作者]

表A的表结构是怎么样的? _Group 是列名?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/9/29 18:41:00 [只看该作者]

表A结构:日期,进货编号,审核,审核人,审核日期,
表C结构:进货编号,产品编号,单位,单价,数量
表B结构:产品编号,单位,单价,当前数量,
用户表结构:用户名Group
_Group 是Group的全局变量

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/9/29 20:16:00 [只看该作者]

表A是怎么和分组关联的。表A.审核人= 用户表. 用户名?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/10/9 11:18:00 [只看该作者]

下面代码是没有用事务进行审核,可以正常运行,
现想改用事务来实现:如果授权人对表A审核成功,将改变表B的产品的数量,也就是表A审核后的产品的数量加到表B的产品的数量,
如果失败则回到原来,如何实现?

审核事件
 If _Group = "经理" Or _Group = "总经理" Then ' 
    Tables("窗口_Table1").Current("审核") = "已审核" '
    Tables("窗口_Table1").Current("审核人") = _Name '
    Tables("窗口_Table1").Current("审核日期") = Date.Today() '
    Tables("窗口_Table1").Current.Save() '保存
Else
    MessageBox.show("你无审核权限!")            
End If


数据加载
Dim db = HySq-l.DataBaseFactory.CreateDatabase("t04") '
If _Group = "经办" Then
    Dim Sq-l = "selec-t * from  表A  where  用户ID =" & _用户ID & " ;"
    Dim dt As system.data.DataTable = db.ExecuteDataSet(Sq-l).Tables(0)
    Dim t As Table = e.Form.Controls("Table1").Table
Else
    Dim Sq-l2 = "Selec-t  a.*,b.jID  " & _
    "From   " & _ 
    "表A   as  a   " & _ 
    "Inner Join    " & _ 
    "gxb  as  b  " & _ 
    "On  " & _ 
    "(a.用户ID = b.用户ID) " & _
    " Where " & _ 
    "b.jID =" & _用户ID & " ; "
    Dim dt2 As system.data.DataTable = db.ExecuteDataSet(Sq-l2).Tables(0)
    Dim t2 As Table = e.Form.Controls("Table1").Table
End If

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/9 11:24:00 [只看该作者]

要全部使用sql处理,比如:

Dim db = HySql.DataBaseFactory.CreateDatabase() '获取数据库对象
Dim tran = db.BeginTransaction() '开始一个事务
Dim sql As String = "UPDATE 表A SET 列1 = 'xxx',列2='xxx' WHERE xx列  = 'xxx';" 
Try 
    Dim res As Integer = db.ExecuteNonQuery(tran, sql) 
    If res = 0 Then 
        db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
        msgbox("取消事务") 
    Else
        Dim sql2 As String = "UPDATE 表B SET 列1 = 'xxx',列2='xxx' WHERE xx列  = 'xxx';"
        res = db.ExecuteNonQuery(tran, sql2)
        If res = 0 Then 
            db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
            msgbox("取消事务") 
        Else
            db.CommitTransaction(tran, True) '提交事务,同时关闭数据库连接
            msgbox("执行成功")
        End If
    End If 
Catch ex As Exception 
    db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
    msgbox("取消事务,原因:" & ex.Message) 
End Try 

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/10/9 13:37:00 [只看该作者]

If _Group = "经理" Or _Group = "总经理" Then '
    '    Tables("窗口_Table1").Current("审核") = "已审核" '
    Tables("窗口_Table1").Current("审核人") = _Name '
    Tables("窗口_Table1").Current("审核日期") = Date.Today() '
    
    Dim tran = db.BeginTransaction() '开始一个事务
    'Dim sq-l As String = "UPDA-TE  表A  SET 审核 = '已审核',审核人 = _Name,审核日期 = Date.Today()   WHERE   _Group = '经理' Or _Group = '总经理';"
    Dim sq-l As String = "UPDAT-E  表A  SET 审核 = '已审核';"
    
    Try 
        Dim res As Integer = db.ExecuteNonQuery(tran, sq-l) 
        If res = 0 Then 
            db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
            msgbox("取消事务") 
        Else

           Dim sql2 As String = "UPDAT-E  表C SET   当前数量 = 当前数量+ 表B.数量   WHERE   产品编号 = 表B.产品编号;"
           res = db.ExecuteNonQuery(tran, sq-l2)

报错:Unknown column '表B.产品编号' in 'where clause',如何处理?

            If res = 0 Then 
                db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
                msgbox("取消事务") 
            Else
                db.CommitTransaction(tran, True) '提交事务,同时关闭数据库连接
                msgbox("执行成功")
            End If
        End If 
    Catch ex As Exception 
        db.RollbackTransaction(tran, True) '回滚事务,同时关闭数据库连接
        msgbox("取消事务,原因:" & ex.Message) 
    End Try
   
Else
    MessageBox.show("你无审核权限!") '否则,提示无审核权限
End If

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/9 13:52:00 [只看该作者]

使用的什么数据库?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2024/10/9 15:16:00 [只看该作者]

数据库MYSQL

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/9 15:17:00 [只看该作者]


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