Foxtable(狐表)用户栏目专家坐堂 → [求助]禁止多列输入重复值


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

主题:[求助]禁止多列输入重复值

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 15:31:00 [显示全部帖子]

 你说的不能禁止是什么情况下的?你这段代码,是所有列都数据都输入了值的情况才判断的。
[此贴子已经被作者于2015/7/6 15:31:16编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 15:58:00 [显示全部帖子]

 那就得看你判断的标准了,根据哪些列判断,没有输入值的时候,需不需要判断。
[此贴子已经被作者于2015/7/6 15:57:52编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 16:20:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "作业日期","加硫炉号","管理号码","管理号码1","生产数","开始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        Dim filter As String = "1=1"
        If dr.IsNull("作业日期") Then
            filter &= " and 作业日期 is null"
        Else
            filter &= " and 作业日期 = '" & dr("作业日期") & "'"
        End If
        If dr.IsNull("加硫炉号") Then
            filter &= " and 加硫炉号 is null"
        Else
            filter &= " and 加硫炉号 = '" & dr("加硫炉号") & "'"
        End If
        If dr.IsNull("管理号码") Then
            filter &= " and 管理号码 is null"
        Else
            filter &= " and 管理号码 = '" & dr("管理号码") & "'"
        End If
        If dr.IsNull("管理号码1") Then
            filter &= " and 管理号码1 is null"
        Else
            filter &= " and 管理号码1 = '" & dr("管理号码1") & "'"
        End If
        If dr.IsNull("生产数") Then
            filter &= " and 生产数 is null"
        Else
            filter &= " and 生产数 = '" & dr("生产数") & "'"
        End If
        If dr.IsNull("开始时间") Then
            filter &= " and 开始时间 is null"
        Else
            filter &= " and 开始时间 = '" & dr("开始时间") & "'"
        End If
        If dr.IsNull("结束时间") Then
            filter &= " and 结束时间 is null"
        Else
            filter &= " and 结束时间 = '" & dr("结束时间") & "'"
        End If
        If e.DataTable.Compute("Count([_Identify])",filter) > 1 Then
            MessageBox.Show("同一工号已经存在相同管理号码和生产数,请确认是否重复输入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
        End If
End Select

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 16:46:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "编号"
        Dim dr As DataRow = e.DataRow
        Dim filter As String = "1=1"
        If dr.IsNull("作业日期") Then
            filter &= " and 作业日期 is null"
        Else
            filter &= " and 作业日期 = '" & dr("作业日期") & "'"
        End If
        If dr.IsNull("加硫炉号") Then
            filter &= " and 加硫炉号 is null"
        Else
            filter &= " and 加硫炉号 = '" & dr("加硫炉号") & "'"
        End If
        If dr.IsNull("管理号码") Then
            filter &= " and 管理号码 is null"
        Else
            filter &= " and 管理号码 = '" & dr("管理号码") & "'"
        End If
        If dr.IsNull("管理号码1") Then
            filter &= " and 管理号码1 is null"
        Else
            filter &= " and 管理号码1 = '" & dr("管理号码1") & "'"
        End If
        If dr.IsNull("生产数") Then
            filter &= " and 生产数 is null"
        Else
            filter &= " and 生产数 = '" & dr("生产数") & "'"
        End If
        If dr.IsNull("开始时间") Then
            filter &= " and 开始时间 is null"
        Else
            filter &= " and 开始时间 = '" & dr("开始时间") & "'"
        End If
        If dr.IsNull("结束时间") Then
            filter &= " and 结束时间 is null"
        Else
            filter &= " and 结束时间 = '" & dr("结束时间") & "'"
        End If
        If e.DataTable.Compute("Count([_Identify])",filter) > 1 Then
            MessageBox.Show("同一工号已经存在相同管理号码和生产数,请确认是否重复输入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
            e.DataRow(e.DataCol.Name) = e.OldValue '取消输入
        End If
End Select

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 16:51:00 [显示全部帖子]

 重置列,看是否弹出提示啊。

 

 不会做就上传具体里例子。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 17:00:00 [显示全部帖子]

 没看到

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 17:13:00 [显示全部帖子]

关键是别人不知道你什么时候算是输入完啊,你可以在新增行的时候判断啊。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 17:32:00 [显示全部帖子]

beforeSaveDataRow事件

 

Dim dr As DataRow = e.DataRow
Dim filter As String = "1=1"
If dr.IsNull("作业日期") Then
    filter &= " and 作业日期 is null"
Else
    filter &= " and 作业日期 = '" & dr("作业日期") & "'"
End If
If dr.IsNull("加硫炉号") Then
    filter &= " and 加硫炉号 is null"
Else
    filter &= " and 加硫炉号 = '" & dr("加硫炉号") & "'"
End If
If dr.IsNull("管理号码") Then
    filter &= " and 管理号码 is null"
Else
    filter &= " and 管理号码 = '" & dr("管理号码") & "'"
End If
If dr.IsNull("管理号码1") Then
    filter &= " and 管理号码1 is null"
Else
    filter &= " and 管理号码1 = '" & dr("管理号码1") & "'"
End If
If dr.IsNull("生产数") Then
    filter &= " and 生产数 is null"
Else
    filter &= " and 生产数 = '" & dr("生产数") & "'"
End If
If dr.IsNull("开始时间") Then
    filter &= " and 开始时间 is null"
Else
    filter &= " and 开始时间 = #" & new Date(1900,1,1,dr("开始时间").Hour,dr("开始时间").minute,dr("开始时间").second) & "#"
End If
If dr.IsNull("结束时间") Then
    filter &= " and 结束时间 is null"
Else
    filter &= " and 结束时间 = #" & new Date(1900,1,1,dr("结束时间").Hour,dr("结束时间").minute,dr("结束时间").second) & "#"
End If
If e.DataTable.Compute("Count([_Identify])",filter) > 1 Then
    MessageBox.Show("同一工号已经存在相同管理号码和生产数,请确认是否重复输入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    e.cancel = True
End If


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/6 21:59:00 [显示全部帖子]

Dim dr As DataRow = e.DataRow
Dim filter As String = "1=1"
If dr.IsNull("作业日期") Then
    filter &= " and 作业日期 is null"
Else
    filter &= " and 作业日期 = '" & dr("作业日期") & "'"
End If
If dr.IsNull("加硫炉号") Then
    filter &= " and 加硫炉号 is null"
Else
    filter &= " and 加硫炉号 = '" & dr("加硫炉号") & "'"
End If
If dr.IsNull("管理号码") Then
    filter &= " and 管理号码 is null"
Else
    filter &= " and 管理号码 = '" & dr("管理号码") & "'"
End If
If dr.IsNull("管理号码1") Then
    filter &= " and 管理号码1 is null"
Else
    filter &= " and 管理号码1 = '" & dr("管理号码1") & "'"
End If
If dr.IsNull("生产数") Then
    filter &= " and 生产数 is null"
Else
    filter &= " and 生产数 = '" & dr("生产数") & "'"
End If
If dr.IsNull("开始时间") Then
    filter &= " and 开始时间 is null"
Else
    filter &= " and 开始时间 = #" & new Date(1900,1,1,dr("开始时间").Hour,dr("开始时间").minute,dr("开始时间").second) & "#"
End If
If dr.IsNull("结束时间") Then
    filter &= " and 结束时间 is null"
Else
    filter &= " and 结束时间 = #" & new Date(1900,1,1,dr("结束时间").Hour,dr("结束时间").minute,dr("结束时间").second) & "#"
End If
If e.DataTable.Compute("Count([_Identify])",filter) > 1 Then
   
    Dim Result As DialogResult
    Result = MessageBox.Show("请确认这条数据是否已重复输入,否则将删除此条记录?", "提示", MessageBoxButtons.RetryCancel,MessageBoxIcon.Error)
    If Result = DialogResult.Retry Then
       
    Else
        e.DataRow.Delete
        e.Cancel = True '取消存盘
    End If
End If

 回到顶部