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


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

主题:时段统计问题

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


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

日期单独拿出来处理

dim f2 as string
Filter = "分类 = '" & e.Form.Controls("ComboBox1").Value & "'"
   With e.Form.Controls("StartDate")
        If .Value IsNot Nothing Then
            f2  =  "缴费_月租_起计日期 <= #" & .Value & "# and 缴费_月租_止计日期 >=#" & .Value & "#"
        End If
    End With
    With e.Form.Controls("EndDate")
        If .Value IsNot Nothing Then
            If f2  > "" Then
                f2  = Filter & " or "
            End If
            f2  = f2  & "缴费_月租_起计日期 <= #" & .Value & "# and 缴费_月租_止计日期 >= #" & .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

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


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


图片点击可在新窗口打开查看此主题相关图片如下:042317.png
图片点击可在新窗口打开查看
不对,数据重复,没有交6月的钱都算进来了!
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
    Dim Filter As String
    Dim f2 As String
    Filter = "分类 = '" & e.Form.Controls("ComboBox1").Value & "'"
    With e.Form.Controls("StartDate")
        If .Value IsNot Nothing Then
            f2 = "缴费_月租_起计日期 <= #" & .Value & "# and 缴费_月租_止计日期 >=#" & .Value & "#"
        End If
    End With
    With e.Form.Controls("EndDate")
        If .Value IsNot Nothing Then
            If f2 > "" Then
                f2 = Filter & " or "
            End If
            f2  = f2  & "缴费_月租_起计日期 <= #" & .Value & "# and 缴费_月租_止计日期 >= #" & .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
        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
            .Fill("Select [_Identify],分类,住址_巷,住址_号,住址_房,姓名,固定电话,手机号码,车牌号码,缴费_月租_月租单价 fro m {缴费情况} Where " & Filter,False)
            Dim t As DataTable = e.Form.Controls("Table1").Table.DataTable
            If t.DataCols.Contains("查询_月租_起计日期") = False And t.DataCols.Contains("查询_月租_止计日期") = False And t.DataCols.Contains("查询_月租_缴费月数") = False And t.DataCols.Contains("查询_月租_缴费金额") = False Then
                t.DataCols.add("查询_月租_起计日期", Gettype(Date))
                t.DataCols.add("查询_月租_止计日期", Gettype(Date))
                t.DataCols.add("查询_月租_缴费月数", Gettype(Double))
                t.DataCols.add("查询_月租_缴费金额", Gettype(Double))
            End If
            .SetColVisibleWidth("分类|60|住址_巷|60|住址_号|40|住址_房|40|姓名|50|固定电话|80|手机号码|80|车牌号码|80|缴费_月租_月租单价|60|查询_月租_起计日期|70|查询_月租_止计日期|70|查询_月租_缴费月数|70|查询_月租_缴费金额|70")
            For Each dr As DataRow In DataTables("月租所属期缴费统计表_Table1").DataRows
                dr("查询_月租_起计日期") = e.Form.Controls("StartDate").Value
                dr("查询_月租_止计日期") = e.Form.Controls("EndDate").Value
                dr("查询_月租_缴费月数") = DateDiff("m",e.Form.Controls("StartDate").Value,e.Form.Controls("EndDate").Value) + 1
                dr("查询_月租_缴费金额") = (DateDiff("m",e.Form.Controls("StartDate").Value,e.Form.Controls("EndDate").Value) + 1) * dr("缴费_月租_月租单价")
            Next
            If .Rows.Count < 15 Then
                .AddNew(15 - .Rows.Count)
            End If
            .ResumeRedraw()
            UnLockBaseMainForm() '解锁主界面
            .Cols("查询_月租_缴费金额").GrandTotal = True
            .GrandTotal = True
        End With
    End If
End If

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


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

上面截图窗口查询出来的数据不就是1~6月的吗?和条件一致啊

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


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

重名,另交了6个月的人只有5个,这搜出来的结果明显不符。

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


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

我是统计不重复数据不是加载数据。

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


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

我解决了。

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


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

我想加一列次数统计,红色标注这样写报错。
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")
            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
            .Fill("Select [_Identify],分类,亲属临时停车,车牌号码,Count(车牌号码) As 查询_临时停放_出入次数 fro m {缴费情况} Where " & Filter1,False)
            Dim t As DataTable = e.Form.Controls("Table1").Table.DataTable
            If t.DataCols.Contains("查询_临时停放_起计时间") = False And t.DataCols.Contains("查询_临时停放_止计时间") = False And t.DataCols.Contains("查询_临时停放_停放累计时间") = False And t.DataCols.Contains("查询_临时停放_计费累计时间") = False And t.DataCols.Contains("查询_临时停放_缴费累计金额") = False Then
                t.DataCols.add("查询_临时停放_起计时间", Gettype(Date))
                t.DataCols.add("查询_临时停放_止计时间", Gettype(Date))
                t.DataCols.add("查询_临时停放_停放累计时间", Gettype(Double))
                t.DataCols.add("查询_临时停放_计费累计时间", Gettype(Double))
                t.DataCols.add("查询_临时停放_缴费累计金额", Gettype(Double))
            End If
            .SetColVisibleWidth("分类|80|亲属临时停车|50|车牌号码|100|出入次数|80|查询_临时停放_起计时间|100|查询_临时停放_止计时间|100|查询_临时停放_停放累计时间|100|查询_临时停放_计费累计时间|100|查询_临时停放_缴费累计金额|120")
            For Each dr As DataRow In DataTables("月租所属期缴费统计表_Table1").DataRows
                dr("查询_临时停放_起计时间") = e.Form.Controls("DateTimePicker1").Value
                dr("查询_临时停放_止计时间") = e.Form.Controls("DateTimePicker2").Value
                dr("查询_临时停放_停放累计时间") = DataTables("缴费情况").Compute("Sum(缴费_临时停放_停车时间)","[车牌号码] ='" & dr("车牌号码") & "' And [缴费_临时停放_起计时间] >= #" & Format(e.Form.Controls("DateTimePicker1").Value.adddays(-1),"G") & "# And [缴费_临时停放_止计时间] <= #" & Format(e.Form.Controls("DateTimePicker2").Value.adddays(1),"G") & "#")
                dr("查询_临时停放_计费累计时间") = DataTables("缴费情况").Compute("Sum(缴费_临时停放_计费时间)","[车牌号码] ='" & dr("车牌号码") & "' And [缴费_临时停放_起计时间] >= #" & Format(e.Form.Controls("DateTimePicker1").Value.adddays(-1),"G") & "# And [缴费_临时停放_止计时间] <= #" & Format(e.Form.Controls("DateTimePicker2").Value.adddays(1),"G") & "#")
                dr("查询_临时停放_缴费累计金额") = DataTables("缴费情况").Compute("Sum(缴费_临时停放_缴费金额)","[车牌号码] ='" & dr("车牌号码") & "' And [缴费_临时停放_起计时间] >= #" & Format(e.Form.Controls("DateTimePicker1").Value.adddays(-1),"G") & "# And [缴费_临时停放_止计时间] <= #" & Format(e.Form.Controls("DateTimePicker2").Value.adddays(1),"G") & "#")
            Next
            If .Rows.Count < 15 Then
                .AddNew(15 - .Rows.Count)
            End If
            .ResumeRedraw()
            UnLockBaseMainForm()
            .Cols("查询_临时停放_停放累计时间").GrandTotal = True
            .Cols("查询_临时停放_计费累计时间").GrandTotal = True
            .Cols("查询_临时停放_缴费累计金额").GrandTotal = True
            .GrandTotal = True
        End With
    End If

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


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


另外网上搜索“sql 分组统计”,理解一下什么是分组查询,学习一下group by的正确用法

.Fill("Select 分类,亲属临时停车,车牌号码,Count(车牌号码) As 查询_临时停放_出入次数 fro m {缴费情况} Where " & Filter1 & “ group by 分类,亲属临时停车,车牌号码”,False)

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


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

.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.4.20.1
错误所在事件:
详细错误信息:
Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

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


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/24 11:10:00 [只看该作者]

这种做了分组的只能用作查询表,不能编辑保存:

.Fill("Select 分类,亲属临时停车,车牌号码,Count(车牌号码) As 查询_临时停放_出入次数 fro m {缴费情况} Where " & Filter1 & “ group by 分类,亲属临时停车,车牌号码”,true)

 回到顶部
总数 123 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..13