Foxtable(狐表)用户栏目专家坐堂 → 关于多个联接列


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

主题:关于多个联接列

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


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

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("费用明细附表"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("日期",DateGroupEnum.None)
bd1.Groups.AddDef("部门")
bd1.Groups.AddDef("成本类别")
bd1.Totals.AddDef("费用_本月")
bd1.Totals.AddDef("费用_累计")
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("利润表附表"))
Dim dt2 As fxDataSource
bd2.Groups.AddDef("日期",DateGroupEnum.None)
bd2.Groups.AddDef("部门")
bd2.Totals.AddDef("主营业务收入_本月")
bd2.Totals.AddDef("主营业务收入_累计")
dt2 = bd2.BuildDataSource()


Dim nms As String() = {"日期","部门"}
dt1.Combine(nms,dt2,nms)
dt1.Show("统计表1") '显示统计结果

Dim t As Table = Tables("统计表1")
t.DataTable.DataCols.Add("费用率_本月",Gettype(Double))
t.DataTable.DataCols.Add("费用率_累计",Gettype(Double))

Dim n1,n2 As Double
For Each r As Row In t.Rows
    If r.IsNull("主营业务收入_本月") = False Then
        n1 = r("主营业务收入_本月")
        n2 = r("主营业务收入_累计")
    End If
    r("费用率_本月") = r("费用_本月") / n1
    r("费用率_累计") = r("费用_累计") / n2
Next


t.DataTable.DataCols("费用率_本月").SetFormat("0.00%")
t.DataTable.DataCols("费用率_累计").SetFormat("0.00%")


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


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

多谢多谢,终于搞定了这张表,报表方面基本完成,项目完成大半了,接下去要弄下图表了

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


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

Dim Filter As String '设置筛选条件
With e.Form.Controls("DW")
    If .Value IsNot Nothing Then
        Filter = "所属单位 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("NF") '在前一筛选条件控制下设置第二项筛选条件,其内容根据第一列的变化而变化
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = 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

Dim bd1 As New SQLGroupTableBuilder("费用占比(小类)","部门损益总账")
Dim dt1 As fxDataSource
bd1.AddTable("部门损益总账","部门名称","部门档案","部门名称") 
bd1.AddTable("部门损益总账","科目编号","科目档案","科目编码")
bd1.Groups.AddDef("所属单位") 
bd1.Groups.Adddef("所属日期",DateGroupEnum.year,"年")
bd1.Groups.Adddef("所属日期",DateGroupEnum.none)
bd1.Groups.AddDef("二级科目","成本小类")  
bd1.Totals.AddDef("借方发生","本月_费用") 
bd1.Decimals = 0 
bd1.Filter = "成本科目 = True And (" & filter & ")"
dt1 = bd1.BuildDataSource()
bd1.build

Dim bd2 As New SQLgroupTableBuilder("统计表2","部门损益总账")
Dim dt2 As fxDataSource
bd2.AddTable("部门损益总账","部门名称","部门档案","部门名称") '添加统计表
bd2.AddTable("部门损益总账","科目名称","科目档案","科目名称") '添加统计表
bd2.Groups.AddDef("所属单位")
bd2.Groups.Adddef("所属日期",DateGroupEnum.year,"年")
bd2.Groups.Adddef("所属日期",DateGroupEnum.none)
bd2.Groups.AddDef("一级科目")
bd2.Totals.AddDef("借方发生","主营业务收入")
bd2.Filter = "一级科目 = '主营业务收入' and (" & filter & ")"
dt2 = bd2.BuildDataSource()


Dim nms As String() = {"所属日期","年","所属单位"}
dt1.Combine(nms,dt2,nms)
dt1.Show("费用占比(小类)") '显示统计结果


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

上述两段代码中加了Groups.Adddef("所属日期",DateGroupEnum.year,"年")后,Dim nms As String() = {"所属日期","年","所属单位"}总是报错,请帮忙看看有什么问题


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


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

说明你表里面就是没有叫做 所属日期 的列。

 

不会做,上传例子。


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


加好友 发短信
等级:六尾狐 帖子:1310 积分:10133 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/24 22:14:00 [只看该作者]

bd1.Groups.Adddef("所属日期",DateGroupEnum.year,"年份")
bd2.Groups.Adddef("所属日期",DateGroupEnum.year,"年份")

应该是这两句代码造成的
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb



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


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

Dim Filter As String = "1=1" '设置筛选条件
With e.Form.Controls("DW")
    If .Value IsNot Nothing Then
        Filter &= " and 所属单位 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("NF") '在前一筛选条件控制下设置第二项筛选条件,其内容根据第一列的变化而变化
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Dim d As Date = new Date(.value, 1, 1)
        Filter = Filter & "所属日期 >= #" & d & "# and 所属日期 < #" & d.AddYears(1) & "#"
    End If
End With

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


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

好的。谢谢
还不太明白,先消化一下

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


加好友 发短信
等级:六尾狐 帖子:1310 积分:10133 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2015/12/25 14:04:00 [只看该作者]

再求助,以下两节代码中,统计列最后生成的列名都是“借方发生_1”和“借方发生_2”,如何区别一下,直接这样组合不起来,

Dim bd1 As New SQLcrossTableBuilder("费用占比(小类)","部门损益总账")
Dim dt1 As fxDataSource
bd1.AddTable("部门损益总账","部门名称","部门档案","部门名称") 
bd1.AddTable("部门损益总账","科目编号","科目档案","科目编码")
bd1.HGroups.AddDef("所属单位") 
bd1.HGroups.Adddef("所属日期",DateGroupEnum.none)
bd1.HGroups.AddDef("二级科目","成本小类")
bd1.VGroups.Adddef("所属日期",DateGroupEnum.year,"{0}_费用")  
bd1.Totals.AddDef("借方发生")
bd1.Decimals = 0 
dt1 = bd1.BuildDataSource()
bd1.build

Dim bd2 As New SQLCrossTableBuilder("统计表2","部门损益总账")
Dim dt2 As fxDataSource
bd2.AddTable("部门损益总账","部门名称","部门档案","部门名称") '添加统计表
bd2.AddTable("部门损益总账","科目名称","科目档案","科目名称") '添加统计表
bd2.HGroups.AddDef("所属单位")
bd2.HGroups.Adddef("所属日期",DateGroupEnum.none)
bd2.HGroups.AddDef("一级科目")
bd2.VGroups.Adddef("所属日期",DateGroupEnum.year,"{0}_收入")  
bd2.Totals.AddDef("借方发生")
dt2 = bd2.BuildDataSource()


Dim nms As String() = {"所属日期","所属单位"}
dt1.Combine(nms,dt2,nms)
dt1.Show("费用占比(小类)") 


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

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


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


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

交叉统计表不能这样用。

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


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

 如果要做,只能用代码处理

 

http://www.foxtable.com/help/topics/2394.htm


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