Foxtable(狐表)用户栏目专家坐堂 → [求助]向另一张表写记录时有时会失败


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

主题:[求助]向另一张表写记录时有时会失败

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]向另一张表写记录时有时会失败  发帖心情 Post By:2022/6/14 9:15:00 [显示全部帖子]

销售出库表的DataColChanged事件有以下代码,作用是将1条销售记录按多个应付日期拆成多条记录分别写入到不对用户开放的另一张表,方便统计账龄,在实际使用中,有时会发生写入失败的情况,但不会报错,发现失败的原因是查账龄时结果不对,目前处理的办法就是将销售出库表的审核列取消审核,然后再审核一下,也就是重新执行下以下代码。
老师,帮我看看下面代码是否有不完善的地方,看看有没有办法解决到发生写入失败时能自动再重写一次。
谢谢老师!

'自动把记录写入应付明细表
If e.DataCol.Name = "审核" Then
    If e.NewValue = True Then
        If e.DataRow("应付日期1") <> Nothing Then
            Dim dr As DataRow = _dt销售出库应付日期明细.AddNew
            dr("ID") = e.DataRow("_Identify")
            dr("应付描述") = e.DataRow("应付描述1")
            dr("应付日期") = e.DataRow("应付日期1")
            dr("应付金额") = e.DataRow("应付金额1")
            For Each dc As DataCol In _dt销售出库应付日期明细.DataCols
                If e.DataTable.DataCols.Contains(dc.Name) Then
                    If e.DataRow.IsNull(dc.Name) = False Then
                        dr(dc.Name) = e.DataRow(dc.Name)
                    End If
                End If
            Next
            dr.Save
        End If
        If e.DataRow("应付日期2") <> Nothing Then
            Dim dr As DataRow = _dt销售出库应付日期明细.AddNew
            dr("ID") = e.DataRow("_Identify")
            dr("应付描述") = e.DataRow("应付描述2")
            dr("应付日期") = e.DataRow("应付日期2")
            dr("应付金额") = e.DataRow("应付金额2")
            For Each dc As DataCol In _dt销售出库应付日期明细.DataCols
                If e.DataTable.DataCols.Contains(dc.Name) Then
                    If e.DataRow.IsNull(dc.Name) = False Then
                        dr(dc.Name) = e.DataRow(dc.Name)
                    End If
                End If
            Next
            dr.Save
        End If
        If e.DataRow("应付日期3") <> Nothing Then
            Dim dr As DataRow = _dt销售出库应付日期明细.AddNew
            dr("ID") = e.DataRow("_Identify")
            dr("应付描述") = e.DataRow("应付描述3")
            dr("应付日期") = e.DataRow("应付日期3")
            dr("应付金额") = e.DataRow("应付金额3")
            For Each dc As DataCol In _dt销售出库应付日期明细.DataCols
                If e.DataTable.DataCols.Contains(dc.Name) Then
                    If e.DataRow.IsNull(dc.Name) = False Then
                        dr(dc.Name) = e.DataRow(dc.Name)
                    End If
                End If
            Next
            dr.Save
        End If
    Else
        _dt销售出库应付日期明细.SQLDeleteFor("ID = " & e.DataRow("_Identify"))
    End If
End If

 回到顶部