以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]判断时间冲突的代码求助,10日更新问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72852) |
-- 作者:huangfanzi -- 发布时间:2015/8/7 15:55:00 -- [求助]判断时间冲突的代码求助,10日更新问题 理论上,一个设备不可能同时做二个产品,有以下数据: 设备名 产品名 开始时间 结束时间 轧机1号 A产品 2015-8-7 08:00 2015-8-7 10:00 轧机1号 B产品 2015-8-7 09:00 2015-8-7 11:00 上面记录中,当录入第二条数据的开始时间时,希望给予提示,告知用户时间冲突,并且取消录入。 请老师告诉我应该如何写判断代码,谢谢!
[此贴子已经被作者于2015/8/10 10:14:44编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/8/7 15:59:00 -- DataColChanging事件,判断一下
Dim fdr As DataRow = e.DataTable.Find("(结束时间 > #" & e.DataRow("开始时间") & "# or 开始时间 < #" & e.DataRow("结束时间") & "#) and 设备名 = \'" & e.DataRow("设备名") & "\'") If fdr IsNot Nothing Then e.Cancel = True End If [此贴子已经被作者于2015/8/7 16:00:20编辑过]
|
-- 作者:huangfanzi -- 发布时间:2015/8/10 10:14:00 -- 老师的代码是用于前台,我现在要改用后台,不成功,估计是SQL数据库中对于时间比较上的录入问题,根据帮助文件已经用单引号了,但还是不行,项目中时间用的是 datetime 格式,请老师帮我改下: Dim dr1 As DataRow = _dt工序合并表.SQLFind("([结束时间] > \'" & e.DataRow("起始时间") & "\' or [起始时间] < \'" & e.DataRow("结束时间") & "\') And [卷号] = \'" & e.DataRow("卷号") & "\'" ) |
-- 作者:大红袍 -- 发布时间:2015/8/10 10:18:00 --
Dim fdr As DataRow = e.DataTable.Find("(结束时间 > #" & e.DataRow("开始时间") & "# or 开始时间 < #" & e.DataRow("结束时间") & "#) and 设备名 = \'" & e.DataRow("设备名") & "\'") If fdr IsNot Nothing Then |
-- 作者:huangfanzi -- 发布时间:2015/8/10 10:29:00 -- 好奇怪,我用了以下代码,不管时间如何输入,都能找到行: \'时间冲突判断 If e.DataCol.Name = "审核" AndAlso e.NewValue = True Then \'同卷号时间冲突判断 Dim dr1 As DataRow = _dt工序合并表.SQLFind("([结束时间] > \'" & e.DataRow("起始时间") & "\' or [起始时间] < \'" & e.DataRow("结束时间") & "\') And [卷号] = \'" & e.DataRow("卷号") & "\'" ) If dr1 IsNot Nothing Then e.Cancel = True MessageBox.Show("时间冲突") End If \'同设备时间冲突判断 End If |
-- 作者:大红袍 -- 发布时间:2015/8/10 10:43:00 -- 逻辑不严谨,这样写
"([结束时间] > \'" & e.DataRow("起始时间") & "\' and [结束时间] < \'" & e.datarow("结束时间") & "\' or [起始时间] < \'" & e.DataRow("结束时间") & "\' and 起始时间 > \'" & e.datarow("起始时间") & "\') And [卷号] = \'" & e.DataRow("卷号") & "\'" |
-- 作者:huangfanzi -- 发布时间:2015/8/10 11:19:00 -- 逻辑上还是有问题,无论输入什么时间都能通过 |
-- 作者:大红袍 -- 发布时间:2015/8/10 11:22:00 -- 不可能,逻辑,已经没有问题了。
上传具体例子。 |
-- 作者:huangfanzi -- 发布时间:2015/8/10 11:49:00 -- 实例上传太麻烦了,我把相关数据贴出来: 工序合并表中已经有以下数据: 工序 卷号 开始时间 结束时间 原料入库 CS150005 2015-7-30 14:00 2015-07-30 14:00 轧机1号 CS150005 2015-8-7 8:00 2015-8-7 9:00 现在有以下数据准备写入工序表,写入的方式是“审核”列勾上后执行相关代码进行写入,写入的数据在时间上存在三种可能性: 可能性1:清洗1号 CS150005 2015-8-7 8:30 2015-8-7 9:30 可能性2:清洗1号 CS150005 2015-8-7 7:30 2015-8-7 8:30 可能性3:清洗1号 CS150005 2015-8-7 8:01 2015-8-7 8:59
|
-- 作者:大红袍 -- 发布时间:2015/8/10 11:56:00 -- "([结束时间] > \'" & e.DataRow("起始时间") & "\' and [结束时间] < \'" & e.datarow("结束时间") & "\' or [起始时间] < \'" & e.DataRow("结束时间") & "\' and 起始时间 > \'" & e.datarow("起始时间") & "\' or [结束时间] >= \'" & e.DataRow("结束时间") & "\' and [起始时间] <= \'" & e.datarow("起始时间") & "\') And [卷号] = \'" & e.DataRow("卷号") & "\'" [此贴子已经被作者于2015/8/10 11:55:54编辑过]
|