以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 时段计算与显示 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159475) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/12/27 21:25:00 -- 时段计算与显示
密码: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/12/27 22:04:00 --
|
||||
-- 作者:采菊东篱下 -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/12/27 22:58:00 -- http://www.foxtable.com/webhelp/topics/0265.htm |
||||
-- 作者:采菊东篱下 -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/12/28 9:57:00 -- If dr("缴费_临时停放_缴费时间") > 1800 Then |
||||
-- 作者:采菊东篱下 -- 发布时间: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编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/12/28 10:14:00 -- 计算的时候减去30分钟呗,小学数学 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/12/28 10:19:00 -- 我打错字了,是停29分钟还是收钱,它应不收钱的。 |
||||
-- 作者:采菊东篱下 -- 发布时间: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
|