DataColChanging
某一列的内容发生变化前执行,此时新值还没有写入表中,列的内容还是更改前的值。
利用此事件,我们可以在某列内容发生变化之前进行拦截判断,如果不符合特定的条件,则取消此次变化,或者重新指定一个值。
-------------------------------------------------------------------------------------------------------------------------------------------
因此,要用e.NewValue 来取用户输入的新的值,如果是新增加的一行,此时e.DataRow("fa piao号码")为空,导致后续出错,建议更改为:
If e.DataCol.Name = "fa piao号码" Then '禁止fa piao号码重复
Dim cmd As New SQLCommand
'cmd.C
cmd.CommandText ="Select Count(*) Fro m {销项fa piao} Where fa piao号码 = '" & e.NewValue & "'"
MessageBox.Show(cmd.ExecuteScalar)
If cmd.ExecuteScalar > 0 Then
e.cancel = True '取消
Messagebox.Show("此fa piao号码已经存在","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
End If
另外对于表达式的合成,建议使用CExp(),例如:
cmd.CommandText = CExp("Select Count(*) Fro m {销项fa piao} Where fa piao号码 = '{0}' ",e.NewValue)
这样不容易出错。
[此贴子已经被作者于2019/7/1 7:50:29编辑过]