以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多表汇总统计咨询 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138178) |
||||
-- 作者:ifox2018 -- 发布时间:2019/7/24 15:30:00 -- 多表汇总统计咨询 如上图,想实现的功能就是从N张表中分组统计出我需要的数据,整合到一个WORD里。(图内[xxx]的想法是通过replace方式替换) 比如,标识“1”,是从表A中汇总统计当前月入职人员数量,填入WORD中,标识“2”,是这些入职人员的明细情况抽取表A中部门名和姓名 同上, 标识“3”,“4”是从表B中提取数据 标识“5”是从表C中提取数据 理论上以上所有的需要用到的表,都是无关联性的。 唯一共同点就是所有表需要统计的时间是统一的,或者是完整自然月,或者是一个自定义的开始和结束时间。 这种功能,是否可以实现,用什么方式实现比较简单。 |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/24 15:35:00 -- 就是Replace:http://www.foxtable.com/webhelp/topics/2890.htm |
||||
-- 作者:ifox2018 -- 发布时间:2019/7/24 15:59:00 -- 我的意思是,这些数据在各自表里都是原始数据,怎么整合过来。 比如提取的原始表A(随手打的,原始数据是在数据库里) 我现在要生成那个WORD里的第一点。 统计时间是7月份。 效果应该是 [此贴子已经被作者于2019/7/24 16:00:07编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/24 16:04:00 -- 使用Find查询数据:http://www.foxtable.com/webhelp/topics/0396.htm 用compute统计数据:http://www.foxtable.com/webhelp/topics/0393.htm
|
||||
-- 作者:ifox2018 -- 发布时间:2019/7/25 14:21:00 --
单独执行,每个小点都能正常生成。 合并后,只生成最后一个小点,其他无效。 代码见压缩包
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/25 14:41:00 -- Dim d As Date = Date.Today Dim d1 As Date = New Date(d.Year,d.Month,1) Dim d2 As Date = New Date(d.Year,d.Month,d.DaysInMonth(d.Year,d.Month)) Dim cnt As Integer cnt = DataTables("rz").Compute("Count([date])", "date >= # " & d1 & " # And date < # " & d2 & " #") \'msgbox( cnt ) Dim tm As String = ProjectPath & "Attachments\\yxj.doc" \'指定模板文件 Dim fl As String = ProjectPath & "Reports\\yxj.doc" \'指定目标文件 Dim wrt As New WordReport(Tables("rz"),tm,fl) \'定义一个WordReport wrt.Replace("[rzrs]",cnt) \'统计当月入职人员总数 Dim rzs As String Dim drs As List(Of DataRow) drs = DataTables("rz").Select("[date] >= # " & d1 & " # And [date] < # " & d2 & " #","name DESC") For Each dr As DataRow In drs rzs = (dr("dep") & " : " & dr("name")) & " || " & rzs \'\' rzs = (dr("dep") & " : " & dr("name")) & rzs \'\'msgbox(rzs) Next wrt.Replace("[rzs]",rzs) Dim cnt1 As Integer cnt1 = DataTables("lz").Compute("Count([date])", "date >= # " & d1 & " # And date < # " & d2 & " #") \'msgbox( cnt ) wrt.Replace("[lzrs]",cnt1) Dim lzs As String Dim drs1 As List(Of DataRow) drs1 = DataTables("lz").Select("[date] >= # " & d1 & " # And [date] < # " & d2 & " #","name DESC") For Each dr1 As DataRow In drs1 lzs = (dr1("dep") & " : " & dr1("name")) & " || " & lzs \' rzs = (dr("dep") & " : " & dr("name")) & rzs \'msgbox(rzs) Next wrt.Replace("[lzs]",lzs) wrt.Build() \'生成报表 wrt.show()
|
||||
-- 作者:ifox2018 -- 发布时间:2019/7/25 15:15:00 -- 解决。 谢谢。 继续添加其他内容试试 |