Foxtable(狐表)用户栏目专家坐堂 → 求助窗口筛选中的一个小错误


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

主题:求助窗口筛选中的一个小错误

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
求助窗口筛选中的一个小错误  发帖心情 Post By:2016/3/11 11:45:00 [只看该作者]

我建了一个窗口对下述代码中的表进行筛选,其中”江西统一特卖“这个部门在一月是有数据的,但二月没数据,我查1--2月的时候这部门是在报表里的,但单独查二月的时候就不在报表里了,整个表的总额就错了,代码有什么问题吗

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


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



[此贴子已经被作者于2016/3/11 13:30:27编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 13:18:00 [只看该作者]

即如何将本月没有发生但本月前有发生的记录也筛选过来

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 13:26:00 [只看该作者]

哪位大侠有空帮忙解决下不,比较急
[此贴子已经被作者于2016/3/11 13:27:38编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 13:35:00 [只看该作者]

问题不出在筛选这里,还是出在原始数据里,如何在对原始数据里进行截止累计的时候,此前有累计数据但本月没发生的,本月累计直接延用最近一次的累计数据



[此贴子已经被作者于2016/3/12 17:05:07编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/11 13:47:00 [只看该作者]

没看懂你的意思。上传具体例子说明问题

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 14:18:00 [只看该作者]

好的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.foxdb



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/11 15:04:00 [只看该作者]

Dim b As New sqlCrossTableBuilder("利润表附表","部门损益总账")  '定义变量利润表附表,并从部门损益总账统计数据
b.AddTable("部门损益总账","部门名称","部门档案","部门名称") '添加统计表
b.AddTable("部门损益总账","科目编号","科目档案","科目编码") '添加统计表
b.HGroups.AddDef("{部门档案}.所属单位") '添加所属单位列用于水平分组
b.HGroups.AddDef("部门类型") '添加部门类型列用于水平分组
b.HGroups.AddDef("上级部门","部门") '添加部门名称列用于水平分组,并将列名称重新命名为部门
b.HGroups.AddDef("所属日期",DateGroupEnum.year,"年")
b.HGroups.AddDef("所属日期",DateGroupEnum.month,"月")
b.VGroups.AddDef("一级科目") '添加一级科目名称列用于垂直分组
b.Totals.AddDef("借方发生","本月") '添加借方发生列用于统计
b.Totals.AddDef("借方发生","累计",True) '添加借方发生列用于统计且截止累计金额
b.Decimals = 2 '小数点取0位
b.Build '生成统计表

Dim dt1 As DataTable = DataTables("部门档案")
Dim dt2 As DataTable = DataTables("部门损益总账")
Dim dt3 As DataTable = DataTables("利润表附表")
dt3.DataRows.Clear
Dim min As Date = dt2.Compute("min(所属日期)")
Dim max As Date = dt2.Compute("max(所属日期)")
For Each dr As DataRow In dt1.Select("")
    Dim sd As Date = min
    Do While Format(sd, "yyyyMM") <= Format(max, "yyyyMM")
        Dim ndr As DataRow = dt3.AddNew
        ndr("所属单位") = dr("所属单位")
        ndr("部门类型") = dr("部门类型")
        ndr("部门") = dr("上级部门")
        ndr("年") = sd.year
        ndr("月") = sd.Month
        sd = sd.AddMonths(1)
    Loop
Next


Dim t3 As Table = Tables("利润表附表")
Dim drs As List(Of DataRow) = t3.DataTable.Select("", "部门,年")
For Each c As Col In t3.Cols
    If c.Caption Like "*_累计" Then
        Dim pdr As DataRow = Nothing
        Dim by As String = c.name.Replace("_up", "")
        For Each dr As DataRow In drs
            If pdr Is Nothing OrElse dr("部门") <> pdr("部门") OrElse dr("年") <> pdr("年") Then
                dr(c.name) = dr(by)
            Else
                dr(c.name) = dr(by) + pdr(by)
            End If
            pdr = dr
        Next
    End If
Next

Dim dic As new Dictionary(of String, String) '循环每一列,把标题和列名存储在字典里,然后引用,哪里需要某列的列名,就直接引用标题,如dic("标题名")
For Each c As Col  In Tables("利润表附表").cols
    dic.add(c.Caption, c.name)
Next

If dic.ContainsKey("销售费用_本月") = False Then
    DataTables("利润表附表").dataCols.add("销售费用_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("销售费用_累计", Gettype(Double))
    dic.add("销售费用_本月", "销售费用_本月")
    dic.add("销售费用_累计", "销售费用_累计")
End If
If dic.ContainsKey("财务费用_本月") = False Then
    DataTables("利润表附表").dataCols.add("财务费用_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("财务费用_累计", Gettype(Double))
    dic.add("财务费用_本月", "财务费用_本月")
    dic.add("财务费用_累计", "财务费用_累计")
End If
If dic.ContainsKey("其他业务成本_本月") = False Then
    DataTables("利润表附表").dataCols.add("其他业务成本_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("其他业务成本_累计", Gettype(Double))
    dic.add("其他业务成本_本月", "其他业务成本_本月")
    dic.add("其他业务成本_累计", "其他业务成本_累计")
End If
If dic.ContainsKey("营业外支出_本月") = False Then
    DataTables("利润表附表").dataCols.add("营业外支出_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("营业外支出_累计", Gettype(Double))
    dic.add("营业外支出_本月", "营业外支出_本月")
    dic.add("营业外支出_累计", "营业外支出_累计")
End If
If dic.ContainsKey("其他业务收入_本月") = False Then
    DataTables("利润表附表").dataCols.add("其他业务收入_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("其他业务收入_累计", Gettype(Double))
    dic.add("其他业务收入_本月", "其他业务收入_本月")
    dic.add("其他业务收入_累计", "其他业务收入_累计")
End If
If dic.ContainsKey("营业外收入_本月") = False Then
    DataTables("利润表附表").dataCols.add("营业外收入_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("营业外收入_累计", Gettype(Double))
    dic.add("营业外收入_本月", "营业外收入_本月")
    dic.add("营业外收入_累计", "营业外收入_累计")
End If
If dic.ContainsKey("主营业务收入_本月") = False Then
    DataTables("利润表附表").dataCols.add("主营业务收入_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("主营业务收入_累计", Gettype(Double))
    dic.add("主营业务收入_本月", "主营业务收入_本月")
    dic.add("主营业务收入_累计", "主营业务收入_累计")
End If
If dic.ContainsKey("主营业务成本_本月") = False Then
    DataTables("利润表附表").dataCols.add("主营业务成本_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("主营业务成本_累计", Gettype(Double))
    dic.add("主营业务成本_本月", "主营业务成本_本月")
    dic.add("主营业务成本_累计", "主营业务成本_累计")
End If
If dic.ContainsKey("营业费用_本月") = False Then
    dic.add("营业费用_本月", "营业费用_本月")
    dic.add("营业费用_累计", "营业费用_累计")
End If
If dic.ContainsKey("资产减值损失_本月") = False Then
    DataTables("利润表附表").dataCols.add("资产减值损失_本月", Gettype(Double))
    DataTables("利润表附表").dataCols.add("资产减值损失_累计", Gettype(Double))
    dic.add("资产减值损失_本月", "资产减值损失_本月")
    dic.add("资产减值损失_累计", "资产减值损失_累计")
End If
If dic.ContainsKey("其他支出_本月") = False Then
    dic.add("其他支出_本月", "其他支出_本月")
    dic.add("其他支出_累计", "其他支出_累计")
End If

DataTables("利润表附表").dataCols.add("营业费用_本月", Gettype(Double), "isnull(" & dic("销售费用_本月") & ",0)+isnull(" & dic("财务费用_本月") & ",0)") '通过Add方法,动态增加临时列,并给临时列设置表达式,表达式引用字典的方式同直接引用有所区别
DataTables("利润表附表").dataCols.add("营业费用_累计", Gettype(Double), "isnull(" & dic("销售费用_累计") & ",0)+isnull(" & dic("财务费用_累计") & ",0)")
DataTables("利润表附表").dataCols.add("其他支出_本月", Gettype(Double), "isnull(" & dic("其他业务成本_本月") & ",0)+isnull(" & dic("营业外支出_本月") & ",0)-isnull(" & dic("其他业务收入_本月") & ",0)-isnull(" & dic("营业外收入_本月") & ",0)")
DataTables("利润表附表").dataCols.add("其他支出_累计", Gettype(Double), "isnull(" & dic("其他业务成本_累计") & ",0)+isnull(" & dic("营业外支出_累计") & ",0)-isnull(" & dic("其他业务收入_累计") & ",0)-isnull(" & dic("营业外收入_累计") & ",0)")
DataTables("利润表附表").dataCols.add("利润_本月", Gettype(Double), "isnull(" & dic("主营业务收入_本月") & ",0)-isnull(" & dic("主营业务成本_本月") & ",0)-isnull(" & dic("资产减值损失_本月") & ",0)-[营业费用_本月]-[其他支出_本月]")   
DataTables("利润表附表").dataCols.add("利润_累计", Gettype(Double), "isnull(" & dic("主营业务收入_累计") & ",0)-isnull(" & dic("主营业务成本_累计") & ",0)-isnull(" & dic("资产减值损失_累计") & ",0)-[营业费用_累计]-[其他支出_累计]")
With Tables("利润表附表") '改变统计表的列的位置
    .Cols("所属单位").Move(2)
    .Cols("部门类型").Move(3)
    .Cols("部门").Move(4)
    .Cols("利润_本月").Move(5)
    .Cols("利润_累计").Move(6)
    .Cols(dic("主营业务收入_本月")).Move(7)
    .Cols(dic("主营业务收入_累计")).Move(8)
    .Cols(dic("主营业务成本_本月")).Move(9)
    .Cols(dic("主营业务成本_累计")).Move(10)
    .Cols("营业费用_本月").Move(11)
    .Cols("营业费用_累计").Move(12)
    .Cols(dic("资产减值损失_本月")).Move(13)
    .Cols(dic("资产减值损失_累计")).Move(14)
    .Cols("其他支出_本月").Move(15)
    .Cols("其他支出_累计").Move(16)
End With
With Tables("利润表附表") '设置各列的宽度
    .AutoSizeCols(15) '统一设置统计列的宽度
    .Cols("所属单位").PrintWidth = 20
    .Cols("部门").PrintWidth = 35
    .Cols("部门类型").PrintWidth = 20
End With
With Tables("利润表附表") '隐藏部分列
    .Cols(dic("销售费用_本月")).Visible = False
    .Cols(dic("销售费用_累计")).Visible = False
    .Cols(dic("财务费用_本月")).Visible = False
    .Cols(dic("财务费用_累计")).Visible = False
    .Cols(dic("其他业务收入_本月")).Visible = False
    .Cols(dic("其他业务收入_累计")).Visible = False
    .Cols(dic("其他业务成本_本月")).Visible = False
    .Cols(dic("其他业务成本_累计")).Visible = False
    .Cols(dic("营业外收入_本月")).Visible = False
    .Cols(dic("营业外收入_累计")).Visible = False
    .Cols(dic("营业外支出_本月")).Visible = False
    .Cols(dic("营业外支出_累计")).Visible = False
End With
Dim t As Table = Tables("利润表附表")
Dim g As Subtotalgroup '以下为设置自定义汇总模式,b.Subtotal = True 不适用通过表达式生成的列
Dim cs As String = ""
For Each c As Col In Tables("利润表附表").cols
    If c.IsNumeric AndAlso c.Name <> "年" AndAlso c.Name <> "月" Then
        cs &= c.name & ","
    End If
Next
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = False

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "部门类型"
g.TotalOn = cs.trim(",")
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = cs.trim(",")
g.Caption = "总计"
t.SubtotalGroups.Add(g)

t.Subtotal()
Dim r As Row
For i As Integer = 0 To t.Rows.Count(True) - 1
    r = t.Rows(i,True)
    If r.IsGroup Then
    r(dic("主营业务收入_累计")) = 0
    r(dic("主营业务成本_累计")) = 0
    r("营业费用_累计") = 0
    r(dic("资产减值损失_累计")) = 0
    r("其他支出_累计") = 0
    r("利润_累计") = 0
    End If
Next

MainTable = Tables("利润表附表") '打开生成的统计表
CurrentTable.Cols.Frozen = 5 '冻结前四列

DataTables("利润表附表").SysStyles("Subtotal0").BackColor = Color.pink '设置报表样式
DataTables("利润表附表").SysStyles("Subtotal0").FontBold = True
DataTables("利润表附表").SysStyles("GrandTotal").FontBold = True


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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 15:17:00 [只看该作者]

哦,就是要把没有的记录重新填充进来是吧

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/11 15:18:00 [只看该作者]

是。

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


加好友 发短信
等级:六尾狐 帖子:1387 积分:10693 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2016/3/11 15:29:00 [只看该作者]

放示例里测试还有问题,什么数据都没有

 回到顶部
总数 41 1 2 3 4 5 下一页