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


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

主题:查询账

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


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

With DataTables("三栏式账_Table1")
    Dim dr As DataRow
    Dim dt1 As DataRow = DataTables("资产").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt2 As DataRow = DataTables("负债").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt3 As DataRow = DataTables("所有者权益").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt4 As DataRow = DataTables("损益").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    If dt1 IsNot Nothing And dt1.IsNull("初始余额") = False Then
        dr(0)("借或贷") = "借"
        dr(0)("余额") = DataTables("资产").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    ElseIf dt1 IsNot Nothing And dt1.IsNull("初始余额") Then
        dr(0)("借或贷") = "借"
        dr(0)("余额") = Tables("三栏式账_Table1").Current("借方金额")
    End If
    If dt2 IsNot Nothing And dt2.IsNull("初始余额") = False Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = DataTables("负债").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    ElseIf dt2 IsNot Nothing And dt2.IsNull("初始余额") Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
    End If
    If dt3 IsNot Nothing And dt3.IsNull("初始余额") = False Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = DataTables("所有者权益").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    ElseIf dt3 IsNot Nothing And dt3.IsNull("初始余额") Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
    End If
    If dt4 IsNot Nothing And dt4.IsNull("初始余额") = False Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = DataTables("损益").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    ElseIf dt4 IsNot Nothing And dt4.IsNull("初始余额") Then
        dr(0)("借或贷") = "贷"
        dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
    End If
    For i As Integer = 1 To Tables("三栏式账_Table1").Rows.Count - 1 '重算余下行的余额
        If dt1 IsNot Nothing Then
            dr(i)("借或贷") = "借"
            If Tables("三栏式账_Table1").Current IsNot Nothing Then
                dr(i)("余额") = dr(i-1)("余额") + dr(i)("借方金额") - dr(i)("贷方金额")
            End If
        ElseIf dt2 IsNot Nothing OrElse dt3 IsNot Nothing OrElse dt4 IsNot Nothing Then
            dr(i)("借或贷") = "贷"
            If Tables("三栏式账_Table1").Current IsNot Nothing Then
                dr(i)("余额") = dr(i-1)("余额") + dr(i)("贷方金额") - dr(i)("借方金额")
            End If
        End If
    Next
    If Tables("三栏式账_Table1").Rows.Count < 15 Then
        Tables("三栏式账_Table1").AddNew(15 - Tables("三栏式账_Table1").Rows.Count)
    End If
End With

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


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

一样报错,无法计算余额
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.26.1
错误所在事件:表,三栏式账_Table1,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Object reference not set to an instance of an object.

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


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


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

已经有初始余额,也有本月发生额和本年累计了,就是无法计算出余额。

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


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

如果DropBox1控件上的科目名称等于资产类科目,且初始余额不为空值,则窗口三栏式账上的第一行借或贷="借",余额等于资产表上的初始余额;如果初始余额为空值,则窗口三栏式账上的第一行借或贷="借",余额等于借方金额;其余行的余额等于上一行余额+借方金额-贷方金额
如果DropBox1控件上的科目名称等于负债或所有者权益或损益类科目,且初始余额不为空值,则窗口三栏式账上的第一行借或贷="贷",余额等于资产表上的初始余额;如果初始余额为空值,则窗口三栏式账上的第一行借或贷="贷",余额等于贷方金额;其余行的余额等于上一行余额+贷方金额-借方金额


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


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

1、Dim dr As DataRow定义了一个变量,却没有赋值,不知道后面的dr(0)是一个什么鬼?
2、
If dt1 IsNot Nothing And dt1.IsNull("初始余额") = False Then
改为
If dt1 IsNot Nothing Andalso dt1.IsNull("初始余额") = False Then

比较合理的if判断逻辑应该是这样
    If dt1 IsNot Nothing 
        dr(0)("借或贷") = "借"
if dt1.IsNull("初始余额") = False Then
        dr(0)("余额") = DataTables("资产").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Else
        dr(0)("余额") = Tables("三栏式账_Table1").Current("借方金额")
    End If
    End If

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


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

改为这样余额依然如上面的截图一样无法计算:
With DataTables("三栏式账_Table1")
    Dim dr As DataRow = DataTables("三栏式账_Table1").DataRows(0)
    Dim dt1 As DataRow = DataTables("资产").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt2 As DataRow = DataTables("负债").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt3 As DataRow = DataTables("所有者权益").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    Dim dt4 As DataRow = DataTables("损益").Find("[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
    If dt1 IsNot Nothing Then
        dr(0)("借或贷") = "借"
        If dt1.IsNull("初始余额") = False Then
            dr(0)("余额") = DataTables("资产").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
        Else
            dr(0)("余额") = Tables("三栏式账_Table1").Current("借方金额")
        End If
    End If
    If dt2 IsNot Nothing Then
        dr(0)("借或贷") = "贷"
        If dt2.IsNull("初始余额") = False Then
            dr(0)("余额") = DataTables("负债").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
        Else
            dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
        End If
    End If
    If dt3 IsNot Nothing Then
        dr(0)("借或贷") = "贷"
        If dt3.IsNull("初始余额") = False Then
            dr(0)("余额") = DataTables("所有者权益").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
        Else
            dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
        End If
    End If
    If dt4 IsNot Nothing Then
        dr(0)("借或贷") = "贷"
        If dt4.IsNull("初始余额") = False Then
            dr(0)("余额") = DataTables("损益").Compute("Sum([初始余额])","[科目名称] = '" & e.Form.Controls("DropBox1").Value & "'")
        Else
            dr(0)("余额") = Tables("三栏式账_Table1").Current("贷方金额")
        End If
    End If
    Dim drs As List(Of DataRow) = DataTables("三栏式账_Table1").Select("[凭证号] Is Not Null")
    For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
        If dt1 IsNot Nothing Then
            drs(i)("借或贷") = "借"
            If Tables("三栏式账_Table1").Current IsNot Nothing Then
                drs(i)("余额") = drs(i-1)("余额") + drs(i)("借方金额") - drs(i)("贷方金额")
            End If
        ElseIf dt2 IsNot Nothing OrElse dt3 IsNot Nothing OrElse dt4 IsNot Nothing Then
            drs(i)("借或贷") = "贷"
            If Tables("三栏式账_Table1").Current IsNot Nothing Then
                drs(i)("余额") = drs(i-1)("余额") + drs(i)("贷方金额") - drs(i)("借方金额")
            End If
        End If
    Next
    If Tables("三栏式账_Table1").Rows.Count < 15 Then
        Tables("三栏式账_Table1").AddNew(15 - Tables("三栏式账_Table1").Rows.Count)
    End If
End With

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


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

dr赋值了DataRows(0),也就是dr表示第一行,那么dr(0)又是什么鬼?

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


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

汇率改为b1.Groups.AddDef("汇率")报错,如果是 b1.Totals.AddDef("汇率")不报错,但显示为0,它不应是统计数,它应该只是显示该行的汇率,请教应怎么改?

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

    Dim g1 As Subtotalgroup
    a.SubtotalGroups.Clear()
    Dim cmd1 As New SQLCommand
    Dim dt1 As DataTable
    cmd1.CommandText = "Select 日期,字号,凭证号,摘要,币种,汇率,借方金额,贷方金额,外币借方金额,外币贷方金额 fro m {财务数据源} Where [日期] >= #" & e.Form.Controls("StartDate").Value _
    & "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "# And [会计科目辅助列] ='" & e.Form.Controls("DropBox1").Value & "'"
    dt1 = cmd1.ExecuteReader()
    '对临时进行分组统计
    Dim b1 As New GroupTableBuilder("统计表1",dt1)
    b1.Groups.AddDef("日期",DateGroupEnum.Year,"年")
    b1.Groups.AddDef("日期","月")
    b1.Groups.AddDef("字号")
    b1.Groups.AddDef("凭证号")
    b1.Groups.AddDef("摘要")
    b1.Groups.AddDef("币种")
    b1.Groups.AddDef("汇率")
    b1.Totals.AddDef("外币借方金额")
    b1.Totals.AddDef("外币贷方金额")
    b1.Totals.AddDef("借方金额")
    b1.Totals.AddDef("贷方金额")
    b1.Build(True)
    Tables("三栏式账_Table1").DataSource = b1.BuildDataSource
    g1 = New Subtotalgroup
    g1.GroupOn = "月"
    g1.TotalOn = "借方金额,贷方金额,外币借方金额,外币贷方金额"
    g1.Caption = "本月发生额"
    a.SubtotalGroups.Add(g1)
    g1 = New Subtotalgroup
    g1.GroupOn = "月"
    g1.Caption = "{0}月"
    a.SubtotalGroups.Add(g1)
    a.Sort = "年,月"
    a.Subtotal(True)
    Dim r1 As Row
    For i As Integer = 0 To a.Rows.Count(True) - 1
        r1 = a.Rows(i,True)
        If r1.IsGroup AndAlso r1("年") Like "*月" '如果是分组行
            Dim f1 As String = "年 = " & a.Rows(i-2,True)("年") & " And 月 <= " & r1("年").trim("月")
            r1("年") = "本年累计"
            r1("借方金额") = a.Compute("Sum(借方金额)",f1)
            r1("贷方金额") = a.Compute("Sum(贷方金额)",f1)
            r1("外币借方金额") = a.Compute("Sum(外币借方金额)",f1)
            r1("外币贷方金额") = a.Compute("Sum(外币借方金额)",f1)
        End If
    Next
    Dim ckb1 As DataTable = e.Form.Controls("Table1").Table.DataTable
    If ckb1.DataCols.Contains("借或贷") = False And ckb1.DataCols.Contains("余额") = False And ckb1.DataCols.Contains("外币余额") = False Then
        ckb1.DataCols.add("借或贷", Gettype(String))
        ckb1.DataCols.add("外币余额", Gettype(Double))
        ckb1.DataCols.add("余额", Gettype(Double))
    End If
    DataTables("三栏式账_Table1").DataCols("借方金额").SetFormat("#,###.##")
    DataTables("三栏式账_Table1").DataCols("贷方金额").SetFormat("#,###.##")
    DataTables("三栏式账_Table1").DataCols("外币借方金额").SetFormat("#,###.##")
    DataTables("三栏式账_Table1").DataCols("外币贷方金额").SetFormat("#,###.##")
    DataTables("三栏式账_Table1").DataCols("外币余额").SetFormat("#,###.##")
    DataTables("三栏式账_Table1").DataCols("余额").SetFormat("#,###.##")
    Tables("三栏式账_Table1").SetColVisibleWidth("年|40|月|25|字号|35|凭证号|30|摘要|200|币种|50|汇率|50|借方金额|60|贷方金额|60|外币借方金额|60|外币贷方金额|60|借或贷|25|外币余额|60|余额|60")
    Tables("三栏式账_Table1").SetHeaderRowHeight(45)
[此贴子已经被作者于2021/5/28 8:43:24编辑过]

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


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

"汇率"有空值导致的,这是个bug,我反馈一下

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