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


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

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

帅哥,在线噢!
有点蓝
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/9 15:29:00 [显示全部帖子]

去掉addnew(10)新增空行的代码,需要的时候再新增(或者在编辑最后一行的时候在自动增加一行)

或者保存的时候不要保存空行

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/9 15:43:00 [显示全部帖子]

60楼方法,保存前重新统计

或者到datacolchanged事件处理,金额变化的同时统计

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/10 11:00:00 [显示全部帖子]

Select Case e.StripItem.Name
    Case "保存" '保存代
        If e.Form.Controls("rq").text = "" Then
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("收款凭证_Table1").Compute("Count([贷方科目])") = 0 Then
            Return
        End If
        For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.Select("[贷方科目] Is not null")
            Dim Tel As String = dt("明细科目")
            Dim Parts() As String = Tel.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("贷方金额") =  dt("金额")
            dt("操作人姓名") = User.Name & " " & Date.Now
            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
        'DataTables("收付转财务数据源").load
        msgbox("[字号] = '收' And Month([日期]) = " & Month(e.Form.Controls("rq").Value) & " And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '借'")
        Dim r As DataRow = DataTables("收付转财务数据源").SQLFind("[字号] = '收' And Month([日期]) = " & Month(e.Form.Controls("rq").Value) & " And [安日期生成单号辅助列] = '" & e.Form.Controls("dh1").text & "' And [借或贷] = '借'")
        If r Is Nothing Then
            r = DataTables("收付转财务数据源").addnew
        End If
        r("日期") = e.Form.Controls("rq").text
        r("凭证号") = e.Form.Controls("dh").text
        r("附件张数") = e.Form.Controls("TextBox1").text
        r("录入员") = e.Form.Controls("lry").text
        r("操作人姓名") = User.Name & " " & Date.Now
        Dim Tel0 As String = e.Form.Controls("ComboBox3").text
        Dim Parts0() As String = Tel0.Split("-")
        If Parts0.length > 0 Then
            r("借方科目") = Parts0(0)
            If Parts0.length > 1 Then
                r("二级科目") = Parts0(1)
            End If
        End If
        r("借方金额") = Tables("收款凭证_Table1").Compute("Sum(金额)")
        r.save
        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
        DataTables("收付转财务数据源").Save()
        DataTables("收付转财务数据源").load
    Case "取消" '取消代码
        e.Form.Close()

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/11 20:32:00 [显示全部帖子]

我测试没有问题。您根本就没有理解代码,所以代码里经常有大量重复的代码和操作

‘如果为空蓝色代码就新增一行,然后红色代码就是对新增行的赋值;如果不为空,那么说明r是可以直接使用的,所以下面红色代码直接就是直接对查询不为空的行赋值。
        If r Is Nothing Then 
            r = DataTables("收付转财务数据源").addnew
        End If
        r("日期") = e.Form.Controls("rq").text
        r("凭证号") = e.Form.Controls("dh").text
        r("附件张数") = e.Form.Controls("TextBox1").text
        r("录入员") = e.Form.Controls("lry").text
        r("操作人姓名") = User.Name & " " & Date.Now
        Dim Tel0 As String = e.Form.Controls("ComboBox3").text
        Dim Parts0() As String = Tel0.Split("-")
        If Parts0.length > 0 Then
            r("借方科目") = Parts0(0)
            If Parts0.length > 1 Then
                r("二级科目") = Parts0(1)
            End If
        End If

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 15:36:00 [显示全部帖子]

有什么问题?窗口表是怎么绑定数据表的?

这句代码去掉,既是错的,也根本没有用处
DataTables("财务数据源").LoadOrder = "日期,[借或贷] = '借',凭证号"

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 16:00:00 [显示全部帖子]

以下是引用采菊东篱下在2021/4/26 15:39:00的发言:
它应该加上[字号] = "收" And  [凭证号] = e.Form.Controls("dh").text 两个条件
For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.Select("[字号] = '收' And  [凭证号] = '" & e.Form.Controls("dh").text & "' And [贷方科目] Is not null")
但这两个条件在窗口的不同控件上,不在窗口的表里,这样定义行得通吗?另这不是用代码绑定在窗口的表上吗?执行 DataTables("财务数据源").Save()时金额没自动保存。

定义没有问题。

DataTables("财务数据源").Save()保存的是主表,不是窗口表。

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 16:01:00 [显示全部帖子]

以下是引用采菊东篱下在2021/4/26 15:42:00的发言:
DataTables("财务数据源").LoadOrder = "日期,字号,[借或贷] = '借',凭证号"
这代码有用,财务数据源是分页加载表,加上它安日期、字号、先借、后贷、凭证号排列,显示才正常。

排序不是条件,不要乱用

DataTables("财务数据源").LoadOrder = "日期,字号,[借或贷],凭证号"

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 16:21:00 [显示全部帖子]

Tables("收款凭证_Table1").fill(......之后,窗口表就是一个独立的表,虽然数据都来自同一个内部数据库表,但是Tables("收款凭证_Table1")表和DataTables("财务数据源")表之间的操作是互相独立的,互不影响。DataTables("财务数据源").Save()并不会保存窗口表更改的数据

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 21:49:00 [显示全部帖子]

DataTables("财务数据源").LoadOrder = "日期,字号,[借或贷] desc,凭证号"

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


加好友 发短信
等级:超级版主 帖子:107347 积分:546002 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/26 21:57:00 [显示全部帖子]

Fill一样可以生成可以保存的表,单表并且第二个参数使用false即可,上面的Fill用法没有问题

如果要使用DataSource,那么会同时影响原表。

加条件可以使用筛选
   .DataSource = DataTables("财务数据源")
   .filter = "安日期生成单号辅助列 = '" & e.Row("安日期生成单号辅助列") & "' And [字号] = '付' And [凭证号] = '" & e.Row("凭证号") & "' And [借或贷] = '借'"


 回到顶部
总数 69 上一页 1 2 3 4 5 6 7 下一页