以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]增加开始和结束时间列(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=54665) |
-- 作者:yyzlxc -- 发布时间:2014/8/1 17:31:00 -- [求助]增加开始和结束时间列(已解决) 一段代码,按批次进行汇总类别,要求当月汇总表增加"开始时间"和"结束时间"两列,分别显示本批次时间的最小值和最大值,如何实现,请各位老师指教,谢谢。 Dim sql As String sql = "Select 日期,批次,时间,单位,类别,1 As 计数 FROM {表A}" Dim b As New CrossTableBuilder("当月汇总",sql) b.HGroups.AddDef("单位") b.HGroups.AddDef("批次") b.VGroups.AddDef("日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.Build() MainTable = Tables("当月汇总") Tables("当月汇总").AutoSizeCols() [此贴子已经被作者于2014-8-2 12:36:59编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/8/1 17:45:00 -- Dim sql As String sql = "Select 日期,批次,时间,单位,类别,1 As 计数 FROM {表A}" Dim b As New CrossTableBuilder("当月汇总",sql) b.HGroups.AddDef("单位") b.HGroups.AddDef("批次") b.VGroups.AddDef("日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.Build() MainTable = Tables("当月汇总") Tables("当月汇总").AutoSizeCols() Dim dt As DataTable = DataTables("当月汇总") dt.DataCols.Add("开始时间", Gettype(Date)) dt.DataCols.Add("结束时间", Gettype(Date)) dt.DataCols("开始时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime) dt.DataCols("结束时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime) For Each dr As DataRow In dt.DataRows Dim fdr1 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "日期,时间") Dim fdr2 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "日期 desc,时间 desc") dr("开始时间") = cdate(fdr1("日期") & " " & fdr1("时间")) dr("结束时间") = cdate(fdr2("日期") & " " & fdr2("时间")) Next |
-- 作者:yyzlxc -- 发布时间:2014/8/1 18:37:00 -- 谢谢甜老师的指教,再次衷心感谢!! |
-- 作者:yyzlxc -- 发布时间:2014/8/1 19:52:00 -- 代码稍作微调,所得效果如下: 按钮代码如下: Dim sql As String sql = "Select 日期,批次,时间,单位,类别,1 As 计数 FROM {表A}" Dim b As New CrossTableBuilder("当月汇总",sql) b.HGroups.AddDef("单位") b.HGroups.AddDef("批次") b.VGroups.AddDef("日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.Build() MainTable = Tables("当月汇总") Tables("当月汇总").AutoSizeCols() Dim dt As DataTable = DataTables("当月汇总") dt.DataCols.Add("开始时间", Gettype(Date)) dt.DataCols.Add("结束时间", Gettype(Date)) dt.DataCols("开始时间").SetDateTimeFormat(DateTimeFormatEnum.LongTime) dt.DataCols("结束时间").SetDateTimeFormat(DateTimeFormatEnum.LongTime) For Each dr As DataRow In dt.DataRows Dim fdr1 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "时间") Dim fdr2 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "时间 desc") dr("开始时间") = cdate(fdr1("时间")) dr("结束时间") = cdate(fdr2("时间")) Next Tables("当月汇总").Cols("开始时间").Move(2) Tables("当月汇总").Cols("结束时间").Move(3) Tables("当月汇总").AutoSizeCols()
[此贴子已经被作者于2014-8-1 20:05:28编辑过]
|
-- 作者:yyzlxc -- 发布时间:2014/8/1 20:15:00 -- 新问题:在每个日期下面增加一列“在册人数”,值为合计,并位于第一列。同时将“出勤”列移到“在册人数”的旁边,即第二列。这样更直观合理。如何实现这样的效果,请各位老师指教,谢谢!! |
-- 作者:yyzlxc -- 发布时间:2014/8/2 8:53:00 -- 顶一下 |
-- 作者:y2287958 -- 发布时间:2014/8/2 9:01:00 -- 说的这个? |
-- 作者:yyzlxc -- 发布时间:2014/8/2 9:16:00 -- 不是列宽,是在水平分组列增加一列以及调整水平分组列的位置。 [此贴子已经被作者于2014-8-2 9:18:19编辑过]
|
-- 作者:yyzlxc -- 发布时间:2014/8/2 11:50:00 -- 解决方法:用union all方法,解决在水平分组列增加“在册人数”列,在类别列的数据,加序号前缀,解决水平分组列的排序问题。 Dim sql As String sql = "Select 日期,批次,时间,单位,类别,1 As 计数 FROM {表A} union all Select 日期,批次,时间,单位,\'0在册人数\',1 As 计数 FROM {表A}" Dim b As New CrossTableBuilder("当月汇总",sql) b.HGroups.AddDef("单位") b.HGroups.AddDef("批次") b.VGroups.AddDef("日期",DateGroupEnum.None) b.VGroups.AddDef("类别") b.Totals.AddDef("计数") b.Build() MainTable = Tables("当月汇总") Tables("当月汇总").AutoSizeCols() Dim dt As DataTable = DataTables("当月汇总") dt.DataCols.Add("开始时间", Gettype(Date)) dt.DataCols.Add("结束时间", Gettype(Date)) dt.DataCols("开始时间").SetDateTimeFormat(DateTimeFormatEnum.LongTime) dt.DataCols("结束时间").SetDateTimeFormat(DateTimeFormatEnum.LongTime) For Each dr As DataRow In dt.DataRows Dim fdr1 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "时间") Dim fdr2 As DataRow = DataTables("表A").Find("单位 = \'" & dr("单位") & "\' and 批次 = \'" & dr("批次") & "\'", "时间 desc") dr("开始时间") = cdate(fdr1("时间")) dr("结束时间") = cdate(fdr2("时间")) Next Tables("当月汇总").Cols("开始时间").Move(2) Tables("当月汇总").Cols("结束时间").Move(3) Tables("当月汇总").AutoSizeCols() |