Foxtable(狐表)用户栏目专家坐堂 → 会计凭证的设计和录入


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

主题:会计凭证的设计和录入

美女呀,离线,留言给我吧!
采菊东篱下
  121楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/9 7:58:00 [只看该作者]

解决了,删除下面的
Tables("转账凭证_Table1").DataTable.LoadFilter = "凭证号='" & e.Row("凭证号") & "'"
    Tables("转账凭证_Table1").DataTable.Load

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  122楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/12 8:41:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:收款凭证0612.foxdb

只要收款凭证保存后修改日期,再保存后财务数据源表就会重复录入一行借方数据。

 回到顶部
帅哥,在线噢!
有点蓝
  123楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

正常,改了日期,不存在这个日期的数据,就会增加一条

        Dim r As DataRow = DataTables("财务数据源").SQLFind("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "' And [日期] = #" & e.Form.Controls("rq").Value & "# And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '借'")
        If r Is Nothing Then
            r = DataTables("财务数据源").addnew
        End If

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  124楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/12 9:46:00 [只看该作者]

如何设置它不重复添加

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  125楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/12 9:56:00 [只看该作者]

允许修改日期,凭证号都可以随之变,但财务数据源中的原单[安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text不为空,不允许添加借方行,只能替代原数据。 

 回到顶部
帅哥,在线噢!
有点蓝
  126楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

业务逻辑的流程自己理清楚。

如果和日期没有关系,就去掉日期条件

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  127楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/12 10:57:00 [只看该作者]

问题是一直在这问题上绕转始终没解决,你看你在69楼给的答案,我改为现在这样,删除已经保存的借方行,重新添加一新,保存后,原来的行并没删除,新添的修改后的行。
Select Case e.StripItem.Name
    Case "保存" '保存代
        If e.Form.Controls("rq").text = "" Then
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("收款凭证_Table1").Compute("Count([贷方总账科目])") = 0 Then
            Return
        Else
            Tables("收款凭证_Table1").FinishEditing '如果单元格处于编辑状态,需要结束编辑,让编辑内容写入单元格
            For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.Select("[贷方总账科目] Is not null")
                Dim Parts() As String = dt("明细科目").Split("-")
                dt("日期") = e.Form.Controls("rq").text
                dt("凭证号") = e.Form.Controls("dh").text
                dt("安日期生成单号辅助列") = e.Form.Controls("dh1").text
                dt("附件张数") = e.Form.Controls("TextBox1").text
                dt("录入员") = e.Form.Controls("lry").text
                dt("会计科目") = dt("贷方总账科目") & "-" & dt("明细科目")
                If dt("明细科目") = "" Then
                    dt("会计科目辅助列") = dt("会计科目").Split(" ")(1)
                Else
                    dt("会计科目辅助列") = dt("会计科目").Split(" ")(1) & "-" & dt("明细科目")
                End If
                dt("一级科目") = dt("贷方总账科目")
                dt("字号") = (e.Form.Controls("TextBox2").text).SubString(0,2)
                dt("借或贷") = "贷"
                dt("贷方数量") =  dt("数量")
                dt("贷方金额") =  dt("金额")
                dt("操作人姓名") = User.Name & " " & Date.Now
                If e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(0) _
                    OrElse e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(1) Then
                    dt("外币贷方金额") =  dt("外币金额")
                End If
                If Parts.length > 0 Then
                    dt("二级科目") = Parts(0)
                    If Parts.length > 1 Then
                        dt("三级科目") = Parts(1)
                        If Parts.length > 2 Then
                            dt("四级科目") = Parts(2)
                            If Parts.length > 3 Then
                                dt("五级科目") = Parts(3)
                            End If
                        End If
                    End If
                End If
                dt.Save
            Next
        End If
        DataTables("财务数据源").load

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  128楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/12 10:58:00 [只看该作者]

        Dim r As DataRow = DataTables("财务数据源").SQLFind("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "# And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '借'")
        If r Is Nothing Then
            r = DataTables("财务数据源").addnew
            r("日期") = e.Form.Controls("rq").text
            r("凭证号") = e.Form.Controls("dh").text
            r("借或贷") = "借"
            r("安日期生成单号辅助列") = e.Form.Controls("dh1").text
            r("附件张数") = e.Form.Controls("TextBox1").text
            r("录入员") = e.Form.Controls("lry").text
            r("字号") = (e.Form.Controls("TextBox2").text).SubString(0,2)
            r("操作人姓名") = User.Name & " " & Date.Now
            r("会计科目") = e.Form.Controls("ComboBox3").Value
            r("会计科目辅助列") = (e.Form.Controls("ComboBox3").Value).Split(" ")(1)
            If e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(0) _
                OrElse e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(1) Then
                r("外币借方金额") =  r("外币金额")
            End If
            Dim Parts0() As String = r("会计科目").Split("-")
            If Parts0.length > 0 Then
                r("借方总账科目") = Parts0(0)
                r("一级科目") = Parts0(0)
                If Parts0.length > 1 Then
                    r("二级科目") = Parts0(1)
                    If Parts0.length > 2 Then
                        r("二级科目") = Parts0(2)
                    End If
                End If
            End If
            r("借方金额") = Tables("收款凭证_Table1").Compute("Sum(金额)")
            r("金额") = Tables("收款凭证_Table1").Compute("Sum(金额)")
            r.save
            Dim drs As List(Of DataRow) = DataTables("财务数据源").SQLSelect("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "' And [日期] = #" & e.Form.Controls("rq").Value & "# And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '贷'")
            Dim zheyao As String = ""
            For c As Integer = 0 To drs.count - 1
                zheyao = zheyao & drs(c)("摘要") & ","
            Next
            r("摘要") = zheyao.TrimEnd(",")
        Else
            DataTables("财务数据源").SQLDeleteFor("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "# And [安日期生成单号辅助列] = '" & (e.Form.Controls("dh1").text).OldValue & "' And [借或贷] = '借'")
            r = DataTables("财务数据源").addnew
            r("日期") = e.Form.Controls("rq").text
            r("凭证号") = e.Form.Controls("dh").text
            r("借或贷") = "借"
            r("安日期生成单号辅助列") = e.Form.Controls("dh1").text
            r("附件张数") = e.Form.Controls("TextBox1").text
            r("录入员") = e.Form.Controls("lry").text
            r("字号") = (e.Form.Controls("TextBox2").text).SubString(0,2)
            r("操作人姓名") = User.Name & " " & Date.Now
            r("会计科目") = e.Form.Controls("ComboBox3").Value
            r("会计科目辅助列") = (e.Form.Controls("ComboBox3").Value).Split(" ")(1)
            If e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(0) _
                OrElse e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(1) And e.Form.Controls("ComboBox1").text = e.form.controls("combobox1").items(1) Then
                r("外币借方金额") =  r("外币金额")
            End If
            Dim Parts0() As String = r("会计科目").Split("-")
            If Parts0.length > 0 Then
                r("借方总账科目") = Parts0(0)
                r("一级科目") = Parts0(0)
                If Parts0.length > 1 Then
                    r("二级科目") = Parts0(1)
                    If Parts0.length > 2 Then
                        r("二级科目") = Parts0(2)
                    End If
                End If
            End If
            r("借方金额") = Tables("收款凭证_Table1").Compute("Sum(金额)")
            r("金额") = Tables("收款凭证_Table1").Compute("Sum(金额)")
            r.save
            Dim drs As List(Of DataRow) = DataTables("财务数据源").SQLSelect("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "' And [日期] = #" & e.Form.Controls("rq").Value & "# And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '贷'")
            Dim zheyao As String = ""
            For c As Integer = 0 To drs.count - 1
                zheyao = zheyao & drs(c)("摘要") & ","
            Next
            r("摘要") = zheyao.TrimEnd(",")
        End If
        r.save
        DataTables("财务数据源").LoadOrder = "字号,日期,凭证号,[借或贷] DESC"
        DataTables("财务数据源").load
        DataTables("财务数据源").DataCols("日期").RaiseDataColChanged()
        DataTables("财务数据源").DataCols("凭证号").RaiseDataColChanged()
        For i As Integer = DataTables("财务数据源").DataRows.count - 1 To 0 Step -1
            Dim tr As DataRow = DataTables("财务数据源").DataRows(i)
            If tr.Isnull("日期") Then
                tr.delete
            End If
        Next
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  129楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

已经存在的行,直接更新就行了,为什么要删除掉再新增,那不是江边上卖水么。

另外不存在的属性,不要乱创造。病急乱投医是会屎人的。这个代码有问题,先花时间理解透代码,再改,而不是闭着眼睛随便凑代码,以为凑多点字数,代码就会听话了!

 回到顶部
帅哥,在线噢!
有点蓝
  130楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

要学会解决问题的思路:首先看删除代码执行是否出错,提示什么错误;其次删除不了,不外乎这些原因
1、删除的条件有问题,调试方法
msgbox("[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "# And [安日期生成单号辅助列] = '" & (e.Form.Controls("dh1").text).OldValue & "' And [借或贷] = '借'")

2、数据有问题,比如有空格等

3、表名,列名不正确

4、连接了其它数据库

一一排除一下


 回到顶部