以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- [求助]日期大小判定代码 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=141662) |
||||
-- 作者:rbsoft -- 发布时间:2019/10/8 10:32:00 -- [求助]日期大小判定代码 附件中的“开始时间”和“结束时间” 都可以修改,但是要求: 要求:1、同一行“结束时间”必须大于“开始时间” 2、同年月日的下一行的“开始时间”必须大于上一行的“结束时间” 当违反这些要求时系统会提示。
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/8 10:57:00 -- datacolchanging事件 Select Case e.DataCol.Name Case "开始时间","结束时间" If e.DataRow.IsNull("开始时间") OrElse e.DataRow.IsNull("结束时间") Else If e.DataRow("开始时间") >= e.DataRow("结束时间") Then msgbox("结束时间必须大于开始时间") e.Cancel = True End If End If If e.DataCol.Name = "开始时间" Then Dim dr As DataRow = e.DataTable.Find("[_Identify] < " & e.DataRow("_Identify"),"[_Identify] desc") If dr IsNot Nothing Then If e.DataRow("开始时间") <= dr("结束时间") Then msgbox("开始时间必须大于上一行结束时间") e.Cancel = True End If End If End If End Select |
||||
-- 作者:rbsoft -- 发布时间:2019/10/8 11:33:00 -- 谢谢。如果按照人员工号判定呢?比如:工号:1001的人员,只判定该人员在2019-09-09的开始时间和结束时间。但是不判定1002人员的,当判定1002人员的时候,不判定1001人员的。意思是:同年月日的下一行的“开始时间”必须大于上一行的“结束时间” 仅限于该工号人员。不同工号人员之间不受限制。请看附件。
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/8 13:54:00 -- Dim dr As DataRow = e.DataTable.Find("[_Identify] < " & e.DataRow("_Identify") & " and 工号=\'" & e.DataRow("工号") & "\'","[_Identify] desc") |
||||
-- 作者:rbsoft -- 发布时间:2019/10/8 14:34:00 -- 同一行,虽然修改开始时间,会提示。但是开始时间还是可以修改过来,修改过后的时间还是会大于结束时间。请看附件截图。
[此贴子已经被作者于2019/10/8 14:34:20编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/8 14:38:00 -- 我测试没有问题,上传实例说明 代码放到datacolchanging事件,不是datacolchanged事件 |
||||
-- 作者:rbsoft -- 发布时间:2019/10/10 11:24:00 -- 请帮忙看看附件实例,谢谢。 |
||||
-- 作者:rbsoft -- 发布时间:2019/10/10 11:24:00 -- 请帮忙看看附件实例,谢谢
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/10 11:30:00 -- Select Case e.DataCol.Name Case "开始时间" If e.DataRow.IsNull("开始时间") = False If e.NewValue >= e.DataRow("结束时间") Then msgbox("结束时间必须大于开始时间") e.Cancel = True End If Dim dr As DataRow = e.DataTable.Find("[_Identify] < " & e.DataRow("_Identify") & " and 工号=\'" & e.DataRow("工号") & "\'","[_Identify] desc") If dr IsNot Nothing Then If e.NewValue <= dr("结束时间") Then msgbox("开始时间必须大于上一行结束时间") e.Cancel = True End If End If End If Case "结束时间" If e.DataRow.IsNull("结束时间") = False If e.DataRow("开始时间") >= e.NewValue Then msgbox("结束时间必须大于开始时间") e.Cancel = True End If End If End Select
|
||||
-- 作者:rbsoft -- 发布时间:2019/10/10 13:03:00 -- 非常感谢。 |