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


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

主题:时段统计问题

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/2 17:03:00 [只看该作者]

到时会不会很卡?

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/2 17:18:00 [只看该作者]

可以把数据存储到外部数据库。人家上亿几千万行数据一样用。卡不卡看网络、服务器性能和开发人员编写代码的能力

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/2 17:24:00 [只看该作者]

外部数据库要交租凭费吧?估计很多单位不愿。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/2 20:18:00 [只看该作者]

报错提示不存在统计表1的Table,不存在查询_月租_缴费金额列
If e.Form.Controls("ComboBox1").Value = "" Then'当日期为空取消保存操作
    messagebox.show("请选择分类")
    Return
End If
If e.Form.Controls("ComboBox1").Value = e.Form.Controls("ComboBox1").Items(1) Then
    If e.Form.Controls("StartDate").Value = Nothing OrElse e.Form.Controls("EndDate").Value = Nothing Then '当日期为空取消保存操作
        messagebox.show("请选择起止日期")
        Return
    Else
        With Tables("安费用所属期查询统计_Table1")
            For i As Integer = .Rows.count - 1 To 0 Step -1
                .Rows(i).Delete
            Next
            LockBaseMainForm() '锁定主界面
            .StopRedraw()
            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 cmd As New SQLCommand
            cmd.CommandText = "Select [_Identify],分类,住址_巷,住址_号,住址_房,姓名,手机号码,车牌号码,缴费_月租_起计日期,缴费_月租_止计日期,缴费_月租_月租单价 fr om {缴费情况} Where [缴费_月租_起计日期] >= #" & e.Form.Controls("StartDate").Value & "# And [缴费_月租_止计日期] <= #" & e.Form.Controls("EndDate").Value & "# And ([车牌号码] = '" & e.Form.Controls("DropBox1").text & "' Or [车牌号码] Is null)"
            Dim dt As DataTable = cmd.ExecuteReader()
            If .Rows.Count < 15 Then
                .AddNew(15 - .Rows.Count)
            End If
            .ResumeRedraw()
            UnLockBaseMainForm() '解锁主界面
            If dt.DataCols.Contains("查询_月租_有效起计日期") = False Then
                dt.DataCols.add("查询_月租_有效起计日期", Gettype(Date))
            End If
            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
            If dt.DataCols.Contains("查询_月租_缴费金额") = False Then
                dt.DataCols.add("查询_月租_缴费金额", Gettype(Double))
            End If
            If dt.DataRows.Count > 0 Then
                Dim rq1 As Date
                Dim rq2 As Date
                For Each dr As DataRow In dt.DataRows
                    If dr("缴费_月租_起计日期") <= "#" & e.Form.Controls("StartDate").Value & "#" Then
                        rq1 = "#" & e.Form.Controls("StartDate").Value & "#"
                    ElseIf dr("缴费_月租_起计日期") > "#" & e.Form.Controls("StartDate").Value & "#" Then
                        rq1 = "#" & dr("缴费_月租_起计日期") & "#"
                    End If
                    If dr("缴费_月租_止计日期") >= "#" & e.Form.Controls("EndDate").Value & "#" Then
                        rq2 = "#" & e.Form.Controls("EndDate").Value & "#"
                    ElseIf dr("缴费_月租_止计日期") < "#" & e.Form.Controls("EndDate").Value & "#" Then
                        rq2 = "#" & dr("缴费_月租_止计日期") & "#"
                    End If
                    If dr.IsNull("车牌号码") Then
                        dr("查询_月租_有效起计日期") = Nothing
                        dr("查询_月租_有效止计日期") = Nothing
                        dr("查询_月租_缴费月数") = Nothing
                    Else
                        dr("查询_月租_有效起计日期") = rq1
                        dr("查询_月租_有效止计日期") = rq2
                        dr("查询_月租_缴费月数") = DateDiff("m",dr("查询_月租_有效起计日期"),dr("查询_月租_有效止计日期")) + 1
                        dr("查询_月租_缴费金额") = (DateDiff("m",dr("查询_月租_有效起计日期"),dr("查询_月租_有效止计日期")) + 1) * dr("缴费_月租_月租单价")
                    End If
                Next
            End If
            Dim b As New CrossTableBuilder("统计表1",dt)
            b.HGroups.AddDef("分类")
            b.HGroups.AddDef("住址_巷")
            b.HGroups.AddDef("住址_号")
            b.HGroups.AddDef("住址_房")
            b.HGroups.AddDef("姓名")
            b.HGroups.AddDef("手机号码")
            b.HGroups.AddDef("车牌号码")
            b.Totals.AddDef("查询_月租_缴费月数")
            b.Totals.AddDef("查询_月租_缴费金额")
            b.HorizontalTotal = True
            b.VerticalTotal = True
            b.Build()
            MainTable = Tables("统计表1")
            .Cols("查询_月租_缴费金额").GrandTotal = True
            DataTables("安费用所属期查询统计_Table1").DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
            .GrandTotal = True
        End With
    End If
[此贴子已经被作者于2021/12/2 20:19:42编辑过]

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/2 20:34:00 [只看该作者]

            Dim b As New GroupTableBuilder("统计表1",dt)
            b.Groups.AddDef("分类")
            b.Groups.AddDef("住址_巷")
            b.Groups.AddDef("住址_号")
            b.Groups.AddDef("住址_房")
            b.Groups.AddDef("姓名")
            b.Groups.AddDef("手机号码")
            b.Groups.AddDef("车牌号码")
            b.Totals.AddDef("查询_月租_缴费月数")
            b.Totals.AddDef("查询_月租_缴费金额")
            b.HorizontalTotal = True
            b.VerticalTotal = True
            .DataSource b.DataSource()
            .Cols("查询_月租_缴费金额").GrandTotal = True
            .DataTable.DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
            .GrandTotal = True
        End With
    End If

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/3 15:12:00 [只看该作者]

红色标注是一次交了几个月的月数,交费时已自动计算出来,我想利用它循环还原回一个月一行的缴费数据,这样取数报错。
        If e.Form.Controls("ComboBox1").Value = "" Then'当日期为空取消保存操作
            messagebox.show("请选择分类")
            Return
        End If
        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(1) Then
            Dim cmd As New SQLCommand
            cmd.CommandText = "Select * Fro m {缴费情况} Where [_Identify] Is null"
            Dim dt As DataTable = cmd.ExecuteReader()
            If dt.DataCols.Contains("查询_月租_所属日期") = False Then
                dt.DataCols.add("查询_月租_所属日期", Gettype(Double))
            End If
            If dt.DataCols.Contains("查询_月租_缴费金额") = False Then
                dt.DataCols.add("查询_月租_缴费金额", Gettype(Double))
            End If
            Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect("[缴费_月租_起计日期] >= #" & e.Form.Controls("StartDate").Value & "# And [缴费_月租_止计日期] <= #" & e.Form.Controls("EndDate").Value & "# And ([车牌号码] = '" & e.Form.Controls("DropBox1").text & "' Or [车牌号码] Is null)")
            If drs.Count > 0 Then
                Dim a As Integer
                For a = 0 To drs.count - 1
                    Dim c As Integer = drs(a)(缴费_月租_缴费月数)
                    Dim b As Integer
                    For b = 0 To c
                        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")
                For i As Integer = .Rows.count - 1 To 0 Step -1
                    .Rows(i).Delete
                Next
                LockBaseMainForm() '锁定主界面
                .StopRedraw()
                Dim b As New GroupTableBuilder("统计表1",DataTables("dt"))
                b.Groups.AddDef("分类")
                b.Groups.AddDef("住址_巷")
                b.Groups.AddDef("住址_号")
                b.Groups.AddDef("住址_房")
                b.Groups.AddDef("姓名")
                b.Groups.AddDef("手机号码")
                b.Groups.AddDef("车牌号码")
                b.Totals.AddDef("查询_月租_所属日期",AggregateEnum.Count,"查询_月租_缴费月数")
                b.Totals.AddDef("查询_月租_缴费金额")
                b.Subtotal = True
                .DataSource = b.BuildDataSource()
                .DataTable.DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
                .SetColVisibleWidth("分类|60|住址_巷|60|住址_号|30|住址_房|30|姓名|50|手机号码|80|车牌号码|70|查询_月租_缴费月数|70|查询_月租_缴费金额|70")
                .SetHeaderRowHeight(0,0,25)
                If .Rows.Count < 15 Then
                    .AddNew(15 - .Rows.Count)
                End If
                .ResumeRedraw()
                UnLockBaseMainForm() '解锁主界面
            End With
        End If


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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/3 15:36:00 [只看该作者]

双引号

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/3 15:54:00 [只看该作者]

If e.Form.Controls("ComboBox1").Value = "" Then'当日期为空取消保存操作
    messagebox.show("请选择分类")
    Return
End If
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(1) 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(Double))
    End If
    If dt.DataCols.Contains("查询_月租_缴费金额") = False Then
        dt.DataCols.add("查询_月租_缴费金额", Gettype(Double))
    End If
    Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect("[缴费_月租_起计日期] >= #" & e.Form.Controls("StartDate").Value & "# And [缴费_月租_止计日期] <= #" & e.Form.Controls("EndDate").Value & "# And ([车牌号码] = '" & e.Form.Controls("DropBox1").text & "' Or [车牌号码] Is null)")
    If drs.Count > 0 Then
        Dim a As Integer
        For a = 0 To drs.count - 1
            Dim b As Integer
            For b = 0 To drs(a)("缴费_月租_缴费月数")
                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")
        For i As Integer = .Rows.count - 1 To 0 Step -1
            .Rows(i).Delete
        Next
        LockBaseMainForm() '锁定主界面
        .StopRedraw()
        Dim b As New GroupTableBuilder("统计表1",dt)
        b.Groups.AddDef("分类")
        b.Groups.AddDef("住址_巷")
        b.Groups.AddDef("住址_号")
        b.Groups.AddDef("住址_房")
        b.Groups.AddDef("姓名")
        b.Groups.AddDef("手机号码")
        b.Groups.AddDef("车牌号码")
        b.Totals.AddDef("查询_月租_所属日期",AggregateEnum.Count,"查询_月租_缴费月数")
        b.Totals.AddDef("查询_月租_缴费金额")
        b.Subtotal = True
        .DataSource = b.BuildDataSource()
        .DataTable.DataCols("查询_月租_缴费金额").SetFormat("#,###.##")
        .SetColVisibleWidth("分类|60|住址_巷|60|住址_号|30|住址_房|30|姓名|50|手机号码|80|车牌号码|70|查询_月租_缴费月数|70|查询_月租_缴费金额|70")
        .SetHeaderRowHeight(0,0,25)
        If .Rows.Count < 15 Then
            .AddNew(15 - .Rows.Count)
        End If
        .ResumeRedraw()
        UnLockBaseMainForm() '解锁主界面
    End With
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目22.foxdb

代码不报错,但选分类月租停车后按按钮统计没有数据显示。
[此贴子已经被作者于2021/12/3 16:54:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:106207 积分:540158 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/3 16:38:00 [只看该作者]

    Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect("[缴费_月租_起计日期] >= #" & e.Form.Controls("StartDate").Value & "# And [缴费_月租_止计日期] <= #" & e.Form.Controls("EndDate").Value & "# And ([车牌号码] = '" & e.Form.Controls("DropBox1").text & "' Or [车牌号码] Is null)")
msgbox(drs.Count)
    If drs.Count > 0 Then

……
    With Tables("安费用所属期查询统计_Table1")
        For i As Integer = .Rows.count - 1 To 0 Step -1
            .Rows(i).Delete
        Next
        LockBaseMainForm() '锁定主界面
        .StopRedraw()
msgbox(dt.datarows.count)
        Dim b As New GroupTableBuilder("统计表1",dt)
        b.Groups.AddDef("分类")
        b.Groups.AddDef("住址_巷")
        b.Groups.AddDef("住址_号")
        b.Groups.AddDef("住址_房")
        b.Groups.AddDef("姓名")
        b.Groups.AddDef("手机号码")
        b.Groups.AddDef("车牌号码")
        b.Totals.AddDef("查询_月租_所属日期",AggregateEnum.Count,"查询_月租_缴费月数")
        b.Totals.AddDef("查询_月租_缴费金额")
        b.Subtotal = True
        .DataSource = b.BuildDataSource()
msgbox(.rows.count)

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/12/3 16:52:00 [只看该作者]

Dim drs As List(Of DataRow) = DataTables("缴费情况").SQLSelect("([车牌号码] = '" & e.Form.Controls("DropBox1").text & "' Or [车牌号码] Is null) And [缴费_月租_起计日期] >= #" & e.Form.Controls("StartDate").Value & "# And [缴费_月租_止计日期] <= #" & e.Form.Controls("EndDate").Value & "#") 
改为这样
msgbox(drs.Count) = 0
msgbox(.rows.count) 也是0
怎么会是0,我选的时段里缴费情况有数据的,不这样写该怎么写?红色标注影响的?
[此贴子已经被作者于2021/12/3 16:55:31编辑过]

 回到顶部