Foxtable(狐表)用户栏目专家坐堂 → 时段统计问题


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

主题:时段统计问题

美女呀,离线,留言给我吧!
采菊东篱下
  61楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/5 23:01:00 [显示全部帖子]

这是数据源格式:

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20211205225928.png
图片点击可在新窗口打开查看
统计后长时间格式的起、止时间不显示数据:

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

        If e.Form.Controls("ComboBox1").Value = "" Then'当日期为空取消保存操作
            messagebox.show("请选择分类")
            Return
        End If
        If e.Form.Controls("DateTimePicker1").Value = Nothing OrElse e.Form.Controls("DateTimePicker2").Value = Nothing Then '当日期为空取消保存操作
            messagebox.show("请选择起止时间")
            Return
        End If
        If e.Form.Controls("ComboBox1").Value = e.Form.Controls("ComboBox1").Items(2)
            Dim Filter1 As String
            Filter1 = "分类 = '" & e.Form.Controls("ComboBox1").Value & "'"
            With e.Form.Controls("DateTimePicker1")
                If .Value IsNot Nothing Then
                    If Filter1 > "" Then
                        Filter1 = Filter1 & " And "
                    End If
                    Filter1 = Filter1 & "缴费_临时停放_起计时间 >= #" & Format(.Value.adddays(-1),"G") & "#"
                End If
            End With
            With e.Form.Controls("DateTimePicker2")
                If .Value IsNot Nothing Then
                    If Filter1 > "" Then
                        Filter1 = Filter1 & " And "
                    End If
                    Filter1 = Filter1 & "缴费_临时停放_止计时间 <= #" & Format(.Value.adddays(1),"G") & "#"
                End If
            End With
            With e.Form.Controls("DropBox1")
                If .Value IsNot Nothing Then
                    If Filter1 > "" Then
                        Filter1 = Filter1 & " And "
                    End If
                    Filter1 = Filter1 & "车牌号码 = '" & .Value & "'"
                End If
            End With
            If Filter1 > "" Then
                With Tables("安费用所属期查询统计_Table1")
                    Dim g3 As Subtotalgroup
                    .SubtotalGroups.Clear()
                    For i As Integer = DataTables("缴费情况").DataRows.count - 1 To 0 Step -1
                        Dim tr As DataRow = DataTables("缴费情况").DataRows(i)
                        If tr.Isnull("车牌号码") Then
                            tr.delete
                        End If
                    Next
                    Dim bc3 As New SQLGroupTableBuilder("统计表5","缴费情况")
                    bc3.Filter = "[缴费_临时停放_起计时间] >= #" & e.Form.Controls("DateTimePicker1").Value & "# And [缴费_临时停放_止计时间] <= #" & e.Form.Controls("DateTimePicker2").Value & "#"
                    bc3.Groups.AddDef("缴费_临时停放_起计时间",DateGroupEnum.Year,"年")
                    bc3.Groups.AddDef("缴费_临时停放_起计时间",DateGroupEnum.Month,"月")
                    bc3.Groups.AddDef("车牌号码")
                    bc3.Groups.AddDef("缴费_临时停放_起计时间")
                    bc3.Groups.AddDef("缴费_临时停放_止计时间")
                    bc3.Totals.AddDef("缴费_临时停放_计费时间")
                    bc3.Totals.AddDef("缴费_临时停放_缴费金额")
                    .DataSource = bc3.BuildDataSource()
                End With
            End If
            With Tables("安费用所属期查询统计_Table1")
                Dim g3 As Subtotalgroup
                .SubtotalGroups.Clear()
                LockBaseMainForm() '锁定主界面
                .StopRedraw()
                g3 = New Subtotalgroup
                g3.GroupOn = "月"
                g3.TotalOn = "缴费_临时停放_缴费金额"
                g3.Caption = "本月发生额"
                .SubtotalGroups.Add(g3)
                g3 = New Subtotalgroup
                g3.GroupOn = "月"
                g3.Caption = "{0}月"
                .SubtotalGroups.Add(g3)
                .Sort = "年,月"
                .Subtotal(True)
                Dim r As Row
                For i As Integer = 0 To .Rows.Count(True) - 1
                    r = .Rows(i,True)
                    If r.IsGroup AndAlso r("年") Like "*月" '如果是分组行
                        Dim f As String = "年 = " & .Rows(i-2,True)("年") & " And 月 <= " & r("年").trim("月")
                        r("年") = "本年累计"
                        r("缴费_临时停放_缴费金额") = .Compute("Sum(缴费_临时停放_缴费金额)",f)
                    End If
                Next
                DataTables("安费用所属期查询统计_Table1").DataCols("缴费_临时停放_起计时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)
                DataTables("安费用所属期查询统计_Table1").DataCols("缴费_临时停放_止计时间").SetDateTimeFormat(DateTimeFormatEnum.DateLongTime)
                DataTables("安费用所属期查询统计_Table1").DataCols("缴费_临时停放_缴费金额").SetFormat("#,###.##")
                .SetColVisibleWidth("年|50|月|40|车牌号码|100|缴费_临时停放_起计时间|130|缴费_临时停放_止计时间|130|缴费_临时停放_计费时间|50|缴费_临时停放_缴费金额|70")
                .SetHeaderRowHeight(0,0,25)
                .ResumeRedraw()
                UnLockBaseMainForm() '解锁主界
            End With
        End If
[此贴子已经被作者于2021/12/5 23:09:47编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  62楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 15:40:00 [显示全部帖子]

 
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20211208152707.png
图片点击可在新窗口打开查看
代码太长不让上传,只好上传项目,效果如图,我想既然是统计所有数据,分类应该不选才对,于是改为这样:
 If e.Form.Controls("StartDate").Value = Nothing OrElse e.Form.Controls("EndDate").Value = Nothing Then '当日期为空取消保存操作
            messagebox.show("请选择起止日期")
            Return
        End If
        If e.Form.Controls("ComboBox1").Value = e.Form.Controls("ComboBox1").Items(0) Then
            Dim cmd As New SQLCommand
            cmd.CommandText = "Select * Fr om {缴费情况} Where [_Identify] Is null"
            Dim dt As DataTable = cmd.ExecuteReader()
            If dt.DataCols.Contains("查询_月租_所属日期") = False Then
                dt.DataCols.add("查询_月租_所属日期", Gettype(Date))
            End If
            If dt.DataCols.Contains("查询_月租_缴费金额") = False Then
                dt.DataCols.add("查询_月租_缴费金额", Gettype(Double))
            End If
            Dim Filter As String
            Dim f2 As String
            Filter = "分类 = '" & e.Form.Controls("ComboBox1").Items(1) & "'"
            With e.Form.Controls("StartDate")
                If .Value IsNot Nothing Then
                    f2 = "[缴费_月租_起计日期] >= #" & .Value & "#"
                End If
            End With
            With e.Form.Controls("EndDate")
                If .Value IsNot Nothing Then
                    If f2 > "" Then
                        f2 = Filter & " And "
                    End If
                    f2  = f2  & "[缴费_月租_起计日期] <= #" & .Value & "#"
                End If
            End With
            If F2 > "" Then
                If Filter > "" Then
                    Filter = Filter & " And "
                End If
                Filter = Filter & " (" & F2 & ") "
            End If
            With e.Form.Controls("DropBox1")
                If .Value IsNot Nothing Then
                    If Filter > "" Then
                        Filter = Filter & " And "
                    End If
                    Filter = Filter & "车牌号码 = '" & .Value & "'"
                End If
            End With
            If Filter > "" Then
                Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect(Filter)
                Dim a As Integer
                For a = 0 To drs.count - 1
                    Dim b As Integer
                    For b = 0 To drs(a)("缴费_月租_缴费月数") - 1
                        Dim da As DataRow = dt.AddNew()
                        da("分类") = e.Form.Controls("ComboBox1").Items(1)
                        da("住址_巷") = drs(a)("住址_巷")
                        da("住址_号") = drs(a)("住址_号")
                        da("住址_房") = drs(a)("住址_房")
                        da("姓名") = drs(a)("姓名")
                        da("手机号码") = drs(a)("手机号码")
                        da("车牌号码") = drs(a)("车牌号码")
                        da("缴费_月租_起计日期") = "#" & drs(a)("缴费_月租_起计日期") & "#"
                        da("缴费_月租_止计日期") = "#" & drs(a)("缴费_月租_止计日期") & "#"
                        da("查询_月租_所属日期") = drs(a)("缴费_月租_起计日期").AddMonths(b)
                        da("缴费_月租_月租单价") = drs(a)("缴费_月租_月租单价")
                        da("查询_月租_缴费金额") = drs(a)("缴费_月租_月租单价")
                    Next
                Next
            End If
            With Tables("安费用所属期查询统计_Table1")
                .SubtotalGroups.Clear()
                LockBaseMainForm() '锁定主界面
                .StopRedraw()
                Dim bc As New GroupTableBuilder("统计表2",dt)
                Dim dt1 As fxDataSource
                bc.Filter = "[查询_月租_所属日期] >= #" & e.Form.Controls("StartDate").Value & "# And [查询_月租_所属日期] <= #" & e.Form.Controls("EndDate").Value & "#"
                bc.Groups.AddDef("查询_月租_所属日期",DateGroupEnum.Year,"年")
                bc.Groups.AddDef("查询_月租_所属日期",DateGroupEnum.Month,"月")
                bc.Totals.AddDef("查询_月租_缴费金额")
                dt1 = bc.BuildDataSource()
                Dim bc1 As New SQLGroupTableBuilder("统计表3","缴费情况")
                Dim dt2 As fxDataSource
                bc1.Filter = "[分类] = '" & e.Form.Controls("ComboBox1").Items(2) & "'And [日期] >= #" & e.Form.Controls("StartDate").Value & "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "#"
                bc1.Groups.AddDef("日期",DateGroupEnum.Year,"年")
                bc1.Groups.AddDef("日期",DateGroupEnum.Month,"月")
                bc1.Totals.AddDef("缴费_临时停放_缴费金额")
                bc1.Totals.AddDef("缴费_其他收入_金额")
                dt2 = bc1.BuildDataSource()
                Dim nms As String() = {"年","月"} '指定连接列
                dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
                .DataSource = dt1
                DataTables("安费用所属期查询统计_Table1").DataCols.Add("当月总收入",Gettype(Double),"IsNull([查询_月租_缴费金额],0) + ISNULL([缴费_临时停放_缴费金额],0) - ISNULL([缴费_其他收入_金额],0)")
                Dim g1 As New Subtotalgroup
                g1.GroupOn = "年" '分组列为客户列
                g1.TotalOn = "查询_月租_缴费金额,缴费_临时停放_缴费金额,缴费_其他收入_金额,当月总收入" '对数量和金额进行统计
                g1.Caption = "本年累计"
                .SubtotalGroups.Add(g1)
                '定义总计分组
                Dim g2 As New Subtotalgroup
                g2.GroupOn = "*"
                g2.TotalOn = "查询_月租_缴费金额,缴费_临时停放_缴费金额,缴费_其他收入_金额,当月总收入"
                .SubtotalGroups.Add(g2)
                .Subtotal() '生成汇总模式
                .DataTable.DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
                .DataTable.DataCols("缴费_临时停放_缴费金额").SetFormat("#,###.##")
                .DataTable.DataCols("缴费_其他收入_金额").SetFormat("#,###.##")
                .DataTable.DataCols("当月总收入").SetFormat("#,###.##")
                .SetHeaderRowHeight(0,25,25)
                .ResumeRedraw()
                UnLockBaseMainForm() '解锁主界面
            End With
        End If

[此贴子已经被作者于2021/12/8 15:41:18编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  63楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 15:40:00 [显示全部帖子]

提示报错
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2021.11.18.11
错误所在事件:窗口,安费用所属期查询统计,ItemClick
详细错误信息:
InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  64楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 15:42:00 [显示全部帖子]

应该是红色标注的问题。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  65楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:02:00 [显示全部帖子]

下拉选项为空啊,故意设了一个为空的选项。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  66楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:03:00 [显示全部帖子]

如何实现不选分类,全部统计。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  67楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:41:00 [显示全部帖子]

.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2021.11.18.11
错误所在事件:窗口,安费用所属期查询统计,ItemClick
详细错误信息:
InvalidArgument=Value of '1' is not valid for 'index'.
Parameter name: index

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  68楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:43:00 [显示全部帖子]

写成这样报错
        If e.Form.Controls("StartDate").Value = Nothing OrElse e.Form.Controls("EndDate").Value = Nothing Then '当日期为空取消保存操作
            messagebox.show("请选择起止日期")
            Return
        End If
        If e.Form.Controls("ComboBox1").Items.count = 0 Then
            Dim cmd As New SQLCommand
            cmd.CommandText = "Select * Fr om {缴费情况} Where [_Identify] Is null"
            Dim dt As DataTable = cmd.ExecuteReader()
            If dt.DataCols.Contains("查询_月租_所属日期") = False Then
                dt.DataCols.add("查询_月租_所属日期", Gettype(Date))
            End If
            If dt.DataCols.Contains("查询_月租_缴费金额") = False Then
                dt.DataCols.add("查询_月租_缴费金额", Gettype(Double))
            End If
            Dim Filter As String
            With e.Form.Controls("ComboBox1")
                If .Value IsNot Nothing Then
                    Filter = "[分类] = '" & .Items(1) & "'"
                End If
            End With
            With e.Form.Controls("StartDate")
                If .Value IsNot Nothing Then
                    If Filter > "" Then
                        Filter = Filter & " And "
                    End If
                    Filter = "[缴费_月租_起计日期] >= #" & .Value & "#"
                End If
            End With
            With e.Form.Controls("EndDate")
                If .Value IsNot Nothing Then
                    If Filter > "" Then
                        Filter = Filter & " And "
                    End If
                    Filter = Filter & "[缴费_月租_起计日期] <= #" & .Value & "#"
                End If
            End With
            With e.Form.Controls("DropBox1")
                If .Value IsNot Nothing Then
                    If Filter > "" Then
                        Filter = Filter & " And "
                    End If
                    Filter = Filter & "车牌号码 = '" & .Value & "'"
                End If
            End With
            If Filter > "" Then
                Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect(Filter)
                Dim a As Integer
                For a = 0 To drs.count - 1
                    Dim b As Integer
                    For b = 0 To drs(a)("缴费_月租_缴费月数") - 1
                        Dim da As DataRow = dt.AddNew()
                        da("分类") = e.Form.Controls("ComboBox1").Items(1)
                        da("住址_巷") = drs(a)("住址_巷")
                        da("住址_号") = drs(a)("住址_号")
                        da("住址_房") = drs(a)("住址_房")
                        da("姓名") = drs(a)("姓名")
                        da("手机号码") = drs(a)("手机号码")
                        da("车牌号码") = drs(a)("车牌号码")
                        da("缴费_月租_起计日期") = "#" & drs(a)("缴费_月租_起计日期") & "#"
                        da("缴费_月租_止计日期") = "#" & drs(a)("缴费_月租_止计日期") & "#"
                        da("查询_月租_所属日期") = drs(a)("缴费_月租_起计日期").AddMonths(b)
                        da("缴费_月租_月租单价") = drs(a)("缴费_月租_月租单价")
                        da("查询_月租_缴费金额") = drs(a)("缴费_月租_月租单价")
                    Next
                Next
            End If
            With Tables("安费用所属期查询统计_Table1")
                .SubtotalGroups.Clear()
                LockBaseMainForm() '锁定主界面
                .StopRedraw()
                Dim bc As New GroupTableBuilder("统计表2",dt)
                Dim dt1 As fxDataSource
                bc.Filter = "[查询_月租_所属日期] >= #" & e.Form.Controls("StartDate").Value & "# And [查询_月租_所属日期] <= #" & e.Form.Controls("EndDate").Value & "#"
                bc.Groups.AddDef("查询_月租_所属日期",DateGroupEnum.Year,"年")
                bc.Groups.AddDef("查询_月租_所属日期",DateGroupEnum.Month,"月")
                bc.Totals.AddDef("查询_月租_缴费金额")
                dt1 = bc.BuildDataSource()
                Dim bc1 As New SQLGroupTableBuilder("统计表3","缴费情况")
                Dim dt2 As fxDataSource
                bc1.Filter = "[分类] = '" & e.Form.Controls("ComboBox1").Items(2) & "'And [日期] >= #" & e.Form.Controls("StartDate").Value & "# And [日期] <= #" & e.Form.Controls("EndDate").Value & "#"
                bc1.Groups.AddDef("日期",DateGroupEnum.Year,"年")
                bc1.Groups.AddDef("日期",DateGroupEnum.Month,"月")
                bc1.Totals.AddDef("缴费_临时停放_缴费金额")
                bc1.Totals.AddDef("缴费_其他收入_金额")
                dt2 = bc1.BuildDataSource()
                Dim nms As String() = {"年","月"} '指定连接列
                dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
                .DataSource = dt1
                DataTables("安费用所属期查询统计_Table1").DataCols.Add("当月总收入",Gettype(Double),"IsNull([查询_月租_缴费金额],0) + ISNULL([缴费_临时停放_缴费金额],0) - ISNULL([缴费_其他收入_金额],0)")
                Dim g1 As New Subtotalgroup
                g1.GroupOn = "年" '分组列为客户列
                g1.TotalOn = "查询_月租_缴费金额,缴费_临时停放_缴费金额,缴费_其他收入_金额,当月总收入" '对数量和金额进行统计
                g1.Caption = "本年累计"
                .SubtotalGroups.Add(g1)
                '定义总计分组
                Dim g2 As New Subtotalgroup
                g2.GroupOn = "*"
                g2.TotalOn = "查询_月租_缴费金额,缴费_临时停放_缴费金额,缴费_其他收入_金额,当月总收入"
                .SubtotalGroups.Add(g2)
                .Subtotal() '生成汇总模式
                .DataTable.DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
                .DataTable.DataCols("缴费_临时停放_缴费金额").SetFormat("#,###.##")
                .DataTable.DataCols("缴费_其他收入_金额").SetFormat("#,###.##")
                .DataTable.DataCols("当月总收入").SetFormat("#,###.##")
                .SetHeaderRowHeight(0,25,25)
                .ResumeRedraw()
                UnLockBaseMainForm() '解锁主界面
            End With
        End If

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  69楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:46:00 [显示全部帖子]

写成这样不报错,但没数据显示
If e.Form.Controls("ComboBox1").Value = e.Form.Controls("ComboBox1").Items(0) Then


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  70楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/8 16:48:00 [显示全部帖子]

有下拉选项,一个是空值,一个是月租停车,一个是临时停放,选第一个选项就统计所有数据。

 回到顶部
总数 79 上一页 1 2 3 4 5 6 7 8 下一页