Foxtable(狐表)用户栏目专家坐堂 → 查询账


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

主题:查询账

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


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

前面半部份代码是先安条件加载数据,后半部份代码是安规定格式统计。
[此贴子已经被作者于2021/5/12 21:17:26编辑过]

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


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

以下是引用采菊东篱下在2021/5/12 17:42:00的发言:
累计是一年归一年的,不是一直累计下去,这样写也不合乎要求,还有余额还要计算,不能去除代码。

这个代码我只是教怎么做统计表,没有考虑其它逻辑。这个是您的业务不是我的,其它逻辑需要自己思考解决。

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


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

以下是引用采菊东篱下在2021/5/12 17:42:00的发言:
安条件统计,不是统计所有数据。

需要什么条件,自己补上

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


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

……
Dim b As New GroupTableBuilder("统计表",dt)
b.Groups.AddDef("日期",DateGroupEnum.Year,"年") 
b.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b.Groups.AddDef("字号")
b.Groups.AddDef("凭证号")
b.Groups.AddDef("摘要")
b.Totals.AddDef("借方金额")
b.Totals.AddDef("贷方金额")

 Tables("三栏式账_Table1").DataSource = b.BuildDataSource 
Dim t As Table = Tables("三栏式账_Table1")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()

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


加好友 发短信
等级:幼狐 帖子:57 积分:443 威望:0 精华:0 注册:2021/5/12 16:59:00
  发帖心情 Post By:2021/5/13 9:12:00 [只看该作者]

我看了一下你with的是DataTables("三栏式账_Table1"),那么你dr=.DataRow

其实是dr = DataTables("三栏式账_Table1").Datarow

你给dr变量想赋予个什么?


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


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

红色标注错误
With Tables("三栏式账_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
End With
Dim t As String
Dim Parts() As String = e.Form.Controls("DropBox1").Value.Split("-")
If Parts.length > 0 Then
    t = Parts(0)
End If
Dim Filter As String
With e.Form.Controls("DropBox1")
    If .Value IsNot Nothing Then
        Filter = "会计科目辅助列 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("StartDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
With e.Form.Controls("EndDate")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "Select 日期,字号,凭证号,摘要,借方金额,贷方金额 fro m {财务数据源} Where Filter"
dt = cmd.ExecuteReader()
'对临时进行分组统计
Dim b As New GroupTableBuilder("统计表",dt)
b.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b.Groups.AddDef("日期",DateGroupEnum.Month,"月")
b.Groups.AddDef("字号")
b.Groups.AddDef("凭证号")
b.Groups.AddDef("摘要")
b.Totals.AddDef("借方金额")
b.Totals.AddDef("贷方金额")
b.Build
Tables("三栏式账_Table1").DataSource = b.BuildDataSource
Dim t As Table = Tables("三栏式账_Table1")
Dim g As Subtotalgroup
t.SubtotalGroups.Clear()

g = New Subtotalgroup
g.GroupOn = "月"
g.TotalOn = "借方金额,贷方金额"
g.upto = True '进行截止统计
t.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.GroupOn = "年"
g.TotalOn = "借方金额,贷方金额"
g.upto = True '进行截止统计
t.SubtotalGroups.Add(g)

t.Subtotal()
Tables("三栏式账_Table1").SetColVisibleWidth("日期|60|字号|40|凭证号|50|摘要|300|借方金额|60|贷方金额|60")
Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
If ckb.DataCols.Contains("借或贷") = False And ckb.DataCols.Contains("余额") = False Then
    ckb.DataCols.add("借或贷", Gettype(String))
    ckb.DataCols.add("余额", Gettype(Double))
End If
With DataTables("三栏式账_Table1")
    Dim dr As DataRow
    Dim drs As List(of DataRow)
    dr = .Find("[_SortKey] < " & Tables("三栏式账_Table1").current("_SortKey"), "[_SortKey] Desc") '找出上一行
    If dr Is Nothing And DataTables("资产").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing Then '如果没有找到上一行,说明本行就是第一行
        Tables("三栏式账_Table1").current("余额") = Tables("三栏式账_Table1").current("借方金额") - Tables("三栏式账_Table1").current("贷方金额")
        dr("借或贷") = "借"
        dr("余额") = current("借方金额")
    ElseIf dr Is Nothing And (DataTables("负债").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing OrElse DataTables("所有者权益").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing OrElse DataTables("损益").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing) Then
        Tables("三栏式账_Table1").current("余额") = Tables("三栏式账_Table1").current("贷方金额") - Tables("三栏式账_Table1").current("借方金额")
        dr("借或贷") = "贷"
        dr("余额") = current("贷方金额")
    End If
    drs = .Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
    For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
        If DataTables("资产").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing Then
            drs(i)("借或贷") = "借"
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("借方金额") - drs(i)("贷方金额")
        ElseIf DataTables("负债").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing OrElse DataTables("所有者权益").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing OrElse DataTables("损益").SQLFind("[科目名称] = '" & t & "'") IsNot Nothing Then
            drs(i)("借或贷") = "贷"
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("贷方金额") - drs(i)("借方金额")
        End If
    Next
    If Tables("三栏式账_Table1").Rows.Count < 15 Then
        Tables("三栏式账_Table1").AddNew(15 - Tables("三栏式账_Table1").Rows.Count)
    End If
End With

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


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

提示什么错误?

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


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

g = New Subtotalgroup
g.GroupOn = "年"
g.TotalOn = "借方金额,贷方金额"
g.upto = True '进行截止统计
t.SubtotalGroups.Add(g)
这样写法会把上年的累计数一直累下去还是一年年累?即累计数下年又从0开始,税务规定下年累计数从0开始的,如果这代码不是这样执行,则不符合要求,要另写代码。

[此贴子已经被作者于2021/5/13 9:50:06编辑过]

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


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

一直累下去的。从0开始是统计,不是累计了。只能手工插入一行使用compute函数进行统计

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


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


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210513095924.png
图片点击可在新窗口打开查看

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