Foxtable(狐表)用户栏目专家坐堂 → 求助一个模板,生在统计表


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

主题:求助一个模板,生在统计表

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


加好友 发短信
等级:幼狐 帖子:86 积分:794 威望:0 精华:0 注册:2015/8/31 11:01:00
求助一个模板,生在统计表  发帖心情 Post By:2015/10/13 17:34:00 [只看该作者]

制作了一个出差登记表,现在想从表中取数输出统计报表,不知道如何设置这个模板。表的结构是这样:
图片点击可在新窗口打开查看此主题相关图片如下:qq图片001.png
图片点击可在新窗口打开查看
想要得到这样一个报表:
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20180419151813.jpg
图片点击可在新窗口打开查看

请哪位大师指点一下好吗,
[此贴子已经被作者于2018/4/19 15:19:35编辑过]

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


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


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


加好友 发短信
等级:幼狐 帖子:86 积分:794 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2015/10/13 22:02:00 [只看该作者]

感谢及时指点,但这个例子不能解决我的问题,如果说所有的列是一一对应的,这个例子刚好可以解决这个问题,但是我提出的问题中有一个是多值字段,那就是“同行人员”列,那个例中的人员有可能是多个人员,如张三、李四,但对应“姓名”列却是赵五,那么就要求,当时间是某一天的时候,出差“姓名”中为赵五的人,在统计表中赵五对应的出差地点就会对号入座,但同行人员中的张三、李四也是一同出差的,那就需要在那个时间对应的行显示张三、李四的出差地点与李四一样。

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


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

参考代码

 

Dim ndt As new DataTableBuilder("临时")
ndt.AddDef("第一列",Gettype(String))
Dim ls As new List(Of String)
For Each dr As DataRow In DataTables("表A").datarows
    For Each s As String In (dr("第三列") & "," & dr("第五列")).split(",")
        If s > "" AndAlso ls.Contains(s) = False Then
            ls.add(s)
            ndt.AddDef(s, Gettype(String))
        End If
    Next
Next
ndt.Build

For Each dr As DataRow In DataTables("表A").datarows
    Dim fdr As DataRow = DataTables("临时").find("第一列 = '" & dr("第一列") & "'")
    If fdr Is Nothing Then
        fdr = DataTables("临时").AddNew
        fdr("第一列") = dr("第一列")
    End If
    For Each s As String In (dr("第三列") & "," & dr("第五列")).split(",")
        If s > "" AndAlso ls.Contains(s) Then
            fdr(s) = dr("第四列")
        End If
    Next
Next

[此贴子已经被作者于2015/10/13 23:04:44编辑过]

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


加好友 发短信
等级:幼狐 帖子:86 积分:794 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2015/10/14 8:57:00 [只看该作者]

非常感谢。问题已经解决90%了,还有一个小问题没有解决,我把第一列作为出差时间列,按那个代码生成了一个临时表,基本上满足我的要求,但是在同一时间点上,出现了多行纪录,为什么不能象统计表一样,在第一列不出现重复的值呢?
图片点击可在新窗口打开查看
我试了,如果是字符型的不出现重复行,为什么换成日期列后,会产生多行重复呢
[此贴子已经被作者于2015/10/14 9:14:58编辑过]

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


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

Dim ndt As new DataTableBuilder("临时")
ndt.AddDef("第一列",Gettype(Date))
Dim ls As new List(Of String)
For Each dr As DataRow In DataTables("表A").datarows
    For Each s As String In (dr("第三列") & "," & dr("第五列")).split(",")
        If s > "" AndAlso ls.Contains(s) = False Then
            ls.add(s)
            ndt.AddDef(s, Gettype(String))
        End If
    Next
Next
ndt.Build

For Each dr As DataRow In DataTables("表A").datarows
    Dim fdr As DataRow = DataTables("临时").find("第一列 = #" & dr("第一列") & "#")
    If fdr Is Nothing Then
        fdr = DataTables("临时").AddNew
        fdr("第一列") = dr("第一列")
    End If
    For Each s As String In (dr("第三列") & "," & dr("第五列")).split(",")
        If s > "" AndAlso ls.Contains(s) Then
            fdr(s) = dr("第四列")
        End If
    Next
Next


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


加好友 发短信
等级:幼狐 帖子:86 积分:794 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2015/10/14 13:36:00 [只看该作者]

好的,非常感谢指导,问题差不多全部解决了,真的非常感谢。但还有一个问题,这个表需要统计的是某一个月的情况,如何在这段代码中加上一个条件,只加载某个月的数据呢?

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


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

For Each dr As DataRow In DataTables("表A").datarows

 

改成

 

Dim Filter As string = 条件语句

For Each dr As DataRow In DataTables("表A").Select(filter)

 

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

 


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


加好友 发短信
等级:幼狐 帖子:86 积分:794 威望:0 精华:0 注册:2015/8/31 11:01:00
  发帖心情 Post By:2015/10/14 15:33:00 [只看该作者]

For Each dr As DataRow In DataTables("表A").datarows这段代码两个地方都有,是改第一处吗还是两处都要改,再就是条件语句是这样写执行不了:
日期 "〈2015-09-30  〉2015-09-01",应该如何写呢

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


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

Dim d As Date = new Date(2015, 9, 1)

Dim filter As String = "日期 >= #" & d & "# and 日期 < #" & d.AddMonths(1) & "#"

For Each dr As DataRow In DataTables("表A").Select(filter)


 回到顶部
总数 13 1 2 下一页