Foxtable(狐表)用户栏目专家坐堂 → [求助]判断时间冲突的代码求助,10日更新问题


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

主题:[求助]判断时间冲突的代码求助,10日更新问题

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]判断时间冲突的代码求助,10日更新问题  发帖心情 Post By:2015/8/7 15:55:00 [只看该作者]

理论上,一个设备不可能同时做二个产品,有以下数据:
设备名    产品名       开始时间                   结束时间
轧机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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/8/10 10:14:00 [只看该作者]

老师的代码是用于前台,我现在要改用后台,不成功,估计是SQL数据库中对于时间比较上的录入问题,根据帮助文件已经用单引号了,但还是不行,项目中时间用的是 datetime 格式,请老师帮我改下:
Dim dr1 As DataRow = _dt工序合并表.SQLFind("([结束时间] > '" & e.DataRow("起始时间") & "' or [起始时间] < '" & e.DataRow("结束时间") & "') And [卷号] = '" & e.DataRow("卷号") & "'" )

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
   
    e.Cancel = True
   
Else
    fdr = _dt工序合并表.SQLFind("([结束时间] > '" & e.DataRow("起始时间") & "' or [起始时间] < '" & e.DataRow("结束时间") & "') And [卷号] = '" & e.DataRow("卷号") & "'" )
    If fdr IsNot Nothing Then
        e.Cancel = True
    End If
End If


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/10 10:43:00 [只看该作者]

逻辑不严谨,这样写

 

"([结束时间] > '" & e.DataRow("起始时间") & "' and  [结束时间] < '" & e.datarow("结束时间") & "' or [起始时间] < '" & e.DataRow("结束时间") & "' and 起始时间 > '" & e.datarow("起始时间") & "') And [卷号] = '" & e.DataRow("卷号") & "'"


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/8/10 11:19:00 [只看该作者]

逻辑上还是有问题,无论输入什么时间都能通过

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/10 11:22:00 [只看该作者]

 不可能,逻辑,已经没有问题了。

 

 上传具体例子。


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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编辑过]

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