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


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

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

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
[求助]禁止多列输入重复值  发帖心情 Post By:2015/7/6 15:29:00 [显示全部帖子]

看帮助写的代码,目前不能实现禁止多列输入重复值,求纠正?

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

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 15:56:00 [显示全部帖子]

是不是我复制了上一条数据的原因啊
有些列我没有输入值,是复制的。
输入这些值时不提示 

DataRowAdding
e.DataRow("工程") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("工程")
e.DataRow("作业日期") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("作业日期")
e.DataRow("管理号码") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("管理号码")
e.DataRow("加硫炉号") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("加硫炉号")
e.DataRow("管理号码1") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("管理号码1")
e.DataRow("生产数") = Tables("二次加硫").Rows(Tables("二次加硫").Count - 1)("生产数")


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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 16:07:00 [显示全部帖子]

我想根据以下列判断,没有输入时一样要判断

作业日期","加硫炉号","管理号码","管理号码1","生产数","开始时间","结束时间




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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 16:44:00 [显示全部帖子]

可以这样吗?
编号,发生变化后,检查作业日期","加硫炉号","管理号码","管理号码1","生产数","开始时间","结束时间,有没有重复的。
[此贴子已经被作者于2015/7/6 16:46:14编辑过]

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 16:49:00 [显示全部帖子]


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

为什么还可以重复输入呢

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 16:59:00 [显示全部帖子]

上附件,请确认
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:1.table

[此贴子已经被作者于2015/7/6 17:00:30编辑过]

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 17:17:00 [显示全部帖子]

可以在保存前确认吗

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


加好友 发短信
等级:童狐 帖子:286 积分:2345 威望:0 精华:0 注册:2013/8/30 3:37:00
  发帖心情 Post By:2015/7/6 21:55: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
        
        Tables("二次加硫").Current.Save()
    Else
        Dim Index As Integer
        Index = Tables("二次加硫").FindRow(e.DataRow) '找出此行在销售数据Table中的位置
        If Index > -1 Then '如果找到此行
            Tables("二次加硫").Position = Index '将焦点定位到此行
        End If
        MainTable = Tables("二次加硫") '选择销售数据表作为主表.
        Tables("二次加硫").Current.Delete
        e.Cancel = True '取消存盘
    End If
End If


谢谢,我这样写可以吧

 回到顶部