禁止输入重复值
我们知道,列有禁止输入重复内容的属性,不过这个属性有局限,就是只有直接在表格中输入的时候才有效,如果你通过窗口输入或者是通过代码设置,同样可以输入重复内容。
禁止单列输入重复值
假定有个订单表,要求订单号列不能输入重复值,可以将这个表的DataColChanging事件代码设置为:
If
e.DataCol.Name = "订单号" Then上述代码设置完成后,不管以任何方式,都无法输入重复的订单号。
禁止多列输入重复值
假定产品表有型号和规格两列,禁止输入型号和规格相同的产品,可以将这个表的DataColChanging事件代码设置为:
Select
Case e.DataCol.name
Case "型号","规格"
Dim xh
As String
Dim gg
As String
If e.DataCol.Name=
"型号" Then
xh =
e.NewValue
gg =
e.DataRow("规格")
Else
gg =
e.NewValue
xh =
e.DataRow("型号")
End If
If xh
> "" AndAlso
gg > ""
Then
Dim
dr As
DataRow = e.DataRow
If
e.DataTable.Find("型号
= '"
& xh
& "' And
规格
= '"
& gg
& "'")
IsNot Nothing
Then
MessageBox.Show("已经存在相同型号和规格的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
e.Cancel
= True
End
If
End If
End
Select
上面的代码有点繁琐。
我们可以变通一下,改为DataColChanged事件事件代码 ,同样可以禁止输入型号和规格相同的行,而且代码会简洁一些:
Select
Case e.DataCol.name不过两者还是有所差别的,DataColChanging是在值发生变化前进行判断,属于提前拦截,而DataColChanged是在值发生变化后判断,属于事后弥补。