Foxtable(狐表)用户栏目专家坐堂 → [求助]代码不完全加载后台数据执行?


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

主题:[求助]代码不完全加载后台数据执行?

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5397 威望:0 精华:0 注册:2009/2/5 13:09:00
[求助]代码不完全加载后台数据执行?  发帖心情 Post By:2018/9/30 13:46:00 [只看该作者]

数据行是基于当前加载sql部分数据的,1、怎么设置基于所有数据(包括后台数据)执也可以执行以下代码,找出重复行。2、这两个代码,可以优化吗?请老师指导

 

Select Case e.DataCol.name
    Case "截止日期","工号","时段"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("截止日期") = False AndAlso dr.IsNull("时段") = False  AndAlso dr.IsNull("工号") = False Then
            For Each s As String In dr("工号").split(",")
                Dim filter = "截止日期 = '" & dr("截止日期") & "' and 时段 = '" & dr("时段") & "' and (','+工号+',') like '%," & s & ",%'"
                Dim count = e.DataTable.Compute("count(时段)", filter)
                If count > 1 Then
                    msgbox("查看员工重复")
                    e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
                    Exit For
                End If
            Next
        End If
End Select


sqlFind

Select Case e.DataCol.name
    Case "截止日期","编号"
        Dim dr1 As DataRow = e.DataRow
        If dr1.IsNull("截止日期")  = False  AndAlso dr1.IsNull("编号") = False Then
            For Each s As String In dr1("编号").split(",")
                Dim filter = "截止日期 = '" & dr1("截止日期") & "'and 编号 = '" & dr1("编号") & "'"
                Dim count = e.DataTable.Compute("count(编号)", filter)
                If count > 1 Then
                    msgbox("查看客户是否重复")
                    e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
                    Exit For
                End If
            Next
        End If
End Select

[此贴子已经被作者于2018/9/30 13:48:01编辑过]

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


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

Select Case e.DataCol.name
    Case "截止日期","工号","时段"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("截止日期") = False AndAlso dr.IsNull("时段") = False  AndAlso dr.IsNull("工号") = False Then
            Dim filter As String = "截止日期 = '" & dr("截止日期") & "' and 时段 = '" & dr("时段") & "' and (1=2 "
            For Each s As String In dr("工号").split(",")
                filter= filter & " or (','+工号+',') like '%," & s & ",%'"
            Next
            filter = filter & ")"
            Dim count = e.DataTable.SqlCompute("count(时段)", filter)
            If count > 1 Then
                msgbox("查看员工重复")
                e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
            End If
        End If
End Select

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5397 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2018/9/30 14:14:00 [只看该作者]

还是要分成两段代码?

下面这段,怎改呢?谢谢!(判定截止日期和编号是否重复,         这两列里没有包含(,)逗号。)

Select Case e.DataCol.name
    Case "截止日期","编号"
        Dim dr1 As DataRow = e.DataRow
        If dr1.IsNull("截止日期")  = False  AndAlso dr1.IsNull("编号") = False Then
            For Each s As String In dr1("编号").split(",")
                Dim filter = "截止日期 = '" & dr1("截止日期") & "'and 编号 = '" & dr1("编号") & "'"
                Dim count = e.DataTable.Compute("count(编号)", filter)
                If count > 1 Then
                    msgbox("查看客户是否重复")
                    e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
                    Exit For
                End If
            Next
        End If
End Select

[此贴子已经被作者于2018/9/30 14:22:37编辑过]

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


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 14:27:00 [只看该作者]

方法完全一样,参考2楼自己改

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5397 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2018/9/30 15:43:00 [只看该作者]

老师,我没有编正常,弹出窗口关不了。

Select Case e.DataCol.name
    Case "截止日期","编号"
        Dim dr1 As DataRow = e.DataRow
        If dr1.IsNull("截止日期") =  False  AndAlso dr1.IsNull("编号") = False Then
            Dim filter As String = "截止日期 = '" & dr1("截止日期") & "' and (1=2 "
            For Each s As String In dr1("编号").split(",")
                filter= filter & " or (','+编号+',') like '%," & s & ",%'"
            Next
            filter = filter & ")"
            Dim count = e.DataTable.SqlCompute("count(编号)", filter)
            If count > 1 Then
                msgbox("日期   客户编号    重复")
                e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
            End If
        End If
End Select

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/9/30 15:43:35编辑过]

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


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/30 16:13:00 [只看该作者]

旧的数据也有可能会重复,直接清空吧

e.DataRow(e.DataCol.Name) = nothing '取消输入

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5397 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2018/9/30 18:04:00 [只看该作者]

这段代码,不生效。

 发帖心情 Post By:2018/9/30 14:12:00 [只看该作者]

Select Case e.DataCol.name
    Case "截止日期","工号","时段"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("截止日期") = False AndAlso dr.IsNull("时段") = False  AndAlso dr.IsNull("工号") = False Then
            Dim filter As String = "截止日期 = '" & dr("截止日期") & "' and 时段 = '" & dr("时段") & "' and (1=2 "
            For Each s As String In dr("工号").split(",")
                filter= filter & " or (','+工号+',') like '%," & s & ",%'"
            Next
            filter = filter & ")"
            Dim count = e.DataTable.SqlCompute("count(时段)", filter)
            If count > 1 Then
                msgbox("查看员工重复")
                e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
            End If
        End If
End Select

[此贴子已经被作者于2018/9/30 18:04:37编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/4 11:10:00 [只看该作者]

试试这样,如果还不行,做个例子上来测试。

 

Select Case e.DataCol.name
    Case "截止日期","工号","时段"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("截止日期") = False AndAlso dr.IsNull("时段") = False  AndAlso dr.IsNull("工号") = False Then
            Dim filter As String = "截止日期 = '" & dr("截止日期") & "' and 时段 = '" & dr("时段") & "' and (1=2 "
            For Each s As String In dr("工号").split(",")
                filter= filter & " or (','+工号+',') like '%," & s & ",%'"
            Next
            filter = filter & ")"
            Dim count = e.DataTable.SqlCompute("count(时段)", filter)
            If count > 1 Then
                msgbox("查看员工重复")
                e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
            Else
                e.datarow.save
            End If
        End If
End Select

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


加好友 发短信
等级:二尾狐 帖子:500 积分:5397 威望:0 精华:0 注册:2009/2/5 13:09:00
  发帖心情 Post By:2018/10/21 0:49:00 [只看该作者]

 

[此贴子已经被作者于2018/10/21 0:49:25编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/21 12:50:00 [只看该作者]

以下是引用manyifuwu在2018/10/21 0:49:00的发言:

 

[此贴子已经被作者于2018/10/21 0:49:25编辑过]

 

没看到附件,如果还有问题,具体实例发上来测试。


 回到顶部