Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

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


2楼
有点蓝 发表于:2024/9/29 17:11:00
表A的表结构是怎么样的? _Group 是列名?
3楼
lgz518 发表于:2024/9/29 18:41:00
表A结构:日期,进货编号,审核,审核人,审核日期,
表C结构:进货编号,产品编号,单位,单价,数量
表B结构:产品编号,单位,单价,当前数量,
用户表结构:用户名Group
_Group 是Group的全局变量
4楼
有点蓝 发表于:2024/9/29 20:16:00
表A是怎么和分组关联的。表A.审核人= 用户表. 用户名?
5楼
lgz518 发表于: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楼
有点蓝 发表于: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 
7楼
lgz518 发表于: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楼
有点蓝 发表于:2024/10/9 13:52:00
使用的什么数据库?
9楼
lgz518 发表于:2024/10/9 15:16:00
数据库MYSQL
10楼
有点蓝 发表于:2024/10/9 15:17:00
https://www.baidu.com/s?wd=mysql%20update%20%E5%85%B3%E8%81%94%E6%9B%B4%E6%96%B0
共14 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 3 queries.