Foxtable(狐表)用户栏目专家坐堂 → 一年内同一企业名称禁止重复输入


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

主题:一年内同一企业名称禁止重复输入

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


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
一年内同一企业名称禁止重复输入  发帖心情 Post By:2019/4/21 9:06:00 [只看该作者]

一年内同一企业名称不能输入两次,datacolchanged设置了如下代码:
'本年内企业名称禁止重复
If e.DataCol.Name = "企业名称" Then
    Dim filter As String = "年度 = '" & Date.Today.year & "'"
    If e.DataRow("企业名称") = Nothing Then
        filter &= " and 企业名称 is null"
    Else
        filter &= " and 企业名称 = '" & e.DataRow("企业名称") & "'"
    End If
    Dim nr As DataRow = DataTables("安全费用提取").Find(filter)
    If nr IsNot Nothing Then
        e.Cancel = True '那么取消输入并提示用户
        Dim Result As DialogResult
        Result = MessageBox.Show("本年度本公司已添加了安全费用提取记录,禁止重复添加!    要删除当前行吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            Tables("安全费用提取").Current.Delete
        Else
        End If
    End If
End If

代码有问题:
1.企业名称不重复时,也提示重复
2.重复并删除时报错:
.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.10.9.1
错误所在事件:表,安全费用提取,DataColChanged
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

请老师帮忙将代码修改一下,谢谢!

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2019/4/21 18:07:00 [只看该作者]

1、

 

Dim nr As DataRow = DataTables("安全费用提取").Find(filter)

 

改成

 

Dim nr As DataRow = DataTables("安全费用提取").Find(filter, 1)

 

2、

 

Tables("安全费用提取").Current.Delete

 

改成

 

e.datarow.Delete

 

3、尽量不要在datacolchanged事件删除行,不然如果你有代码循环给各列赋值,都会报错(你删除行了,再赋值,自然报错)


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


加好友 发短信
等级:小狐 帖子:364 积分:3491 威望:0 精华:0 注册:2012/7/24 7:15:00
  发帖心情 Post By:2019/4/21 18:50:00 [只看该作者]

好的,谢谢

 回到顶部