If e.DataCol.Name = "第七列" Then
Dim drs As DataRow
drs = e.DataTable.SQLFind("第七列 = '" & e.NewValue & "'")
Dim dr As DataRow
dr = e.DataTable.Find("第七列 = '" & e.NewValue & "'")
If dr IsNot Nothing Or drs IsNot Nothing Then
MessageBox.Show("此内容已经存在!")
e.Cancel = True
End If
End If
代码如果改成这样的话
先判断一下已加载的数据包括还没有保存的数据
再判断一下没有加载的数据中有没有
看似没问题,但实际上会带来严重的后果,客户会无所适从
比如原来第二行有数据,789是保存了的. 在后台还是记载的789
我现在删除了第二行的789或第二行的修改成其它数据456,再在其它的行输入了789.则这时系统不让输入789了,用户就有些发疯了
解决问题的方法有:
一,全部加载数据,用FIND 一个方法 .但数据多了全部加载是不现实的
二,使用SQL本身的UNIQUE 非空约束,数据随便你怎么改以最后结果为准. 与方法一本质上是相同的.但可惜的是狐表不支持.
目前的方法 :
数据又不能全部加载,只能部份加载
又要保证数据列内容不重复
客户的操作习惯又是不可控的
想要做个不重复的控制,还真有点难
难道必须 控制重复的单元格一发生值变体就保存一下本行? 然后全部编辑完了再来个全表保存?
还真 是费脑子的事情.