以文本方式查看主题

-  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
--  多表汇总统计咨询

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



如上图,想实现的功能就是从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(随手打的,原始数据是在数据库里)

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


我现在要生成那个WORD里的第一点。

统计时间是7月份。 
效果应该是

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



[此贴子已经被作者于2019/7/24 16:00:07编辑过]

--  作者:有点蓝
--  发布时间:2019/7/24 16:04:00
--  
使用Find查询数据:http://www.foxtable.com/webhelp/topics/0396.htm


--  作者:ifox2018
--  发布时间:2019/7/25 14:21:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


单独执行,每个小点都能正常生成。   合并后,只生成最后一个小点,其他无效。

代码见压缩包

--  作者:有点蓝
--  发布时间: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
--  
解决。   谢谢。  继续添加其他内容试试