Foxtable(狐表)用户栏目专家坐堂 → 时段计算与显示


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

主题:时段计算与显示

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
时段计算与显示  发帖心情 Post By:2020/12/27 21:25:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理.foxdb

密码:888888
  我想在缴费情况表实现:
1、如果录入缴费_月租_起计日期、缴费_月租_止计日期,自动计出缴费_月租_缴费月数;
2、如果录入缴费_月租_起计日期、缴费_月租_缴费月数,自动计出缴费_月租_止计日期;
3、缴费_临时停放_缴费时间以时分显示。
  现1、自动计出缴费_月租_缴费月数已实现,但2、自动计出缴费_月租_止计日期,没反应,3、缴费_临时停放_缴费时间未能以时分显示。程序如下:

Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_止计日期"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_止计日期") Then
            dr("缴费_月租_缴费月数") = Nothing
        ElseIf dr.IsNull("缴费_月租_起计日期") = False And dr.IsNull("缴费_月租_缴费月数") = False Then
            dr("缴费_月租_止计日期") = dr("缴费_月租_起计日期").AddMonths(dr("缴费_月租_缴费月数"))
            dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
        Else
            dr("缴费_月租_缴费月数") = DateDiff("m",dr("缴费_月租_起计日期"),dr("缴费_月租_止计日期")) + 1
            dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
        End If
End Select

Select Case e.DataCol.name
    Case "缴费_临时停放_起计时间","缴费_临时停放_止计时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("缴费_临时停放_起计时间") OrElse dr.IsNull("缴费_临时停放_止计时间") Then
            dr("缴费_临时停放_缴费时间") = Nothing
            Dim tp As TimeSpan
            tp = dr("缴费_临时停放_止计时间") - dr("缴费_临时停放_起计时间")
            dr("缴费_临时停放_缴费时间") = tp.TotalHours
        ElseIf dr("缴费_临时停放_缴费时间") * 3 <= 20 Then '每小时3元停车费,超过20元的按最高20元计。
            dr("缴费_临时停放_缴费金额") = dr("缴费_临时停放_缴费时间") * 3
        Else
            dr("缴费_临时停放_缴费金额") = 20
        End If
End Select
[此贴子已经被作者于2020/12/27 21:26:07编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/27 22:04:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理(1).zip


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


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

时段一般是这样显示的:
2020-10-01到2020-12-31为3个月,一般不跨到第二个月月初的,因此我算出的月份与公式算出的月份相差1,我加了1
Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_止计日期"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_止计日期") Then
            dr("缴费_月租_缴费月数") = Nothing
        Else
            dr("缴费_月租_缴费月数") = DateDiff("m",dr("缴费_月租_起计日期"),dr("缴费_月租_止计日期")) + 1
        End If
        Systemready = True
    Case "缴费_月租_缴费月数","缴费_月租_月租单价"
        Dim dr As DataRow = e.DataRow
        dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
End Select
同样倒求的缴费_月租_止计日期也应算到月底,我参考帮助里的代码其实不符合要求的,取月份的最后一天代码怎成? 
[此贴子已经被作者于2020/12/28 10:10:31编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/27 22:58:00 [只看该作者]


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


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

Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_止计日期"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_止计日期") Then
            dr("缴费_月租_缴费月数") = Nothing
        Else
            dr("缴费_月租_缴费月数") = DateDiff("m",dr("缴费_月租_起计日期"),dr("缴费_月租_止计日期")) + 1
        End If
        Systemready = True
    Case "缴费_月租_缴费月数","缴费_月租_月租单价"
        Dim dr As DataRow = e.DataRow
        dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
End Select

Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_缴费月数"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_缴费月数") Then
            dr("缴费_月租_止计日期") = Nothing
        Else
            Dim a As Date = dr("缴费_月租_起计日期").AddMonths(dr("缴费_月租_缴费月数") - 1)
            dr("缴费_月租_止计日期") = New Date(a.Year,a.Month,Date.DaysInMonth(a.Year,a.Month)) '
        End If
        Systemready = True
End Select

Select Case e.DataCol.name
    Case "缴费_临时停放_起计时间","缴费_临时停放_止计时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("缴费_临时停放_起计时间") OrElse dr.IsNull("缴费_临时停放_止计时间") Then
            dr("缴费_临时停放_缴费时间") = Nothing
        Else
            Dim tp As TimeSpan
            tp = cdate(dr("缴费_临时停放_止计时间")) - cdate(dr("缴费_临时停放_起计时间"))
            dr("缴费_临时停放_缴费时间") = tp.TotalSeconds
        End If
    Case "缴费_临时停放_缴费时间"
        Dim dr As DataRow = e.DataRow
        dr("缴费_临时停放_缴费金额") = math.Min(20,dr("缴费_临时停放_缴费时间") / 3600 * 3) '每小时3元停车费,超过20元的按最高20元计.
End Select

最后一天的截止日期问题解决了,还有,临时收费的时间是从30分钟起计的,即30分钟内不收费,超过30分钟后安每小时3元计,超过20元的按最高20元,我把最后的代码改为:
        If dr("缴费_临时停放_缴费时间") = tp.TotalSeconds > 1800 Then
            dr("缴费_临时停放_缴费金额") = math.Min(20,dr("缴费_临时停放_缴费时间") / 3600 * 3) '每小时3元停车费,超过20元的按最高20元计
        End If.
报错!请教应怎么写?
[此贴子已经被作者于2020/12/28 9:58:23编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/28 9:57:00 [只看该作者]

 If dr("缴费_临时停放_缴费时间")  > 1800 Then

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


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

不行49分钟还是算钱
Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_止计日期"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_止计日期") Then
            dr("缴费_月租_缴费月数") = Nothing
        Else
            dr("缴费_月租_缴费月数") = DateDiff("m",dr("缴费_月租_起计日期"),dr("缴费_月租_止计日期")) + 1
        End If
        Systemready = True
    Case "缴费_月租_缴费月数","缴费_月租_月租单价"
        Dim dr As DataRow = e.DataRow
        dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
End Select

Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_缴费月数"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_缴费月数") Then
            dr("缴费_月租_止计日期") = Nothing
        Else
            Dim a As Date = dr("缴费_月租_起计日期").AddMonths(dr("缴费_月租_缴费月数") - 1)
            dr("缴费_月租_止计日期") = New Date(a.Year,a.Month,Date.DaysInMonth(a.Year,a.Month)) 
        End If
        Systemready = True
End Select

Select Case e.DataCol.name
    Case "缴费_临时停放_起计时间","缴费_临时停放_止计时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("缴费_临时停放_起计时间") OrElse dr.IsNull("缴费_临时停放_止计时间") Then
            dr("缴费_临时停放_缴费时间") = Nothing
        Else
            Dim tp As TimeSpan
            tp = cdate(dr("缴费_临时停放_止计时间")) - cdate(dr("缴费_临时停放_起计时间"))
            dr("缴费_临时停放_缴费时间") = tp.TotalSeconds
        End If
    Case "缴费_临时停放_缴费时间"
        Dim dr As DataRow = e.DataRow
        If dr("缴费_临时停放_缴费时间") > 1800 Then
            dr("缴费_临时停放_缴费金额") = math.Min(20,dr("缴费_临时停放_缴费时间") / 3600 * 3) '每小时3元停车费,超过20元的按最高20元计
        End If
End Select
[此贴子已经被作者于2020/12/28 10:04:25编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/28 10:14:00 [只看该作者]

计算的时候减去30分钟呗,小学数学

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


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

我打错字了,是停29分钟还是收钱,它应不收钱的。

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


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

可以了:
Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_止计日期"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_止计日期") Then
            dr("缴费_月租_缴费月数") = Nothing
        Else
            dr("缴费_月租_缴费月数") = DateDiff("m",dr("缴费_月租_起计日期"),dr("缴费_月租_止计日期")) + 1
        End If
        Systemready = True
    Case "缴费_月租_缴费月数","缴费_月租_月租单价"
        Dim dr As DataRow = e.DataRow
        dr("缴费_月租_缴费金额") = dr("缴费_月租_缴费月数") * dr("缴费_月租_月租单价")
End Select

Select Case e.DataCol.name
    Case "缴费_月租_起计日期","缴费_月租_缴费月数"
        Dim dr As DataRow = e.DataRow
        Systemready = False
        If dr.IsNull("缴费_月租_起计日期") OrElse dr.IsNull("缴费_月租_缴费月数") Then
            dr("缴费_月租_止计日期") = Nothing
        Else
            Dim a As Date = dr("缴费_月租_起计日期").AddMonths(dr("缴费_月租_缴费月数") - 1)
            dr("缴费_月租_止计日期") = New Date(a.Year,a.Month,Date.DaysInMonth(a.Year,a.Month))
        End If
        Systemready = True
End Select

Select Case e.DataCol.name
    Case "缴费_临时停放_起计时间","缴费_临时停放_止计时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("缴费_临时停放_起计时间") OrElse dr.IsNull("缴费_临时停放_止计时间") Then
            dr("缴费_临时停放_缴费时间") = Nothing
        Else
            Dim tp As TimeSpan
            tp = cdate(dr("缴费_临时停放_止计时间")) - cdate(dr("缴费_临时停放_起计时间"))
            dr("缴费_临时停放_缴费时间") = tp.TotalSeconds
        End If
    Case "缴费_临时停放_缴费时间"
        Dim dr As DataRow = e.DataRow
        If dr("缴费_临时停放_缴费时间") > 1800 Then
            dr("缴费_临时停放_缴费金额") = math.Min(20,dr("缴费_临时停放_缴费时间") / 3600 * 3) '每小时3元停车费,超过20元的按最高20元计
        Else
            dr("缴费_临时停放_缴费金额") = 0
        End If
End Select

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