删除DataColChanging和DataColChanged事件代码,将DAtaColChanging事件代码设置为:
Select Case e.DataCol.name
Case "年度","编号"
Dim dr As DataRow = e.DataRow
If dr.IsNull("年度") = False AndAlso dr.IsNull("编号") = False Then
If e.DataTable.Compute("Count([_Identify])","年度 = '" & dr("年度") & "' And 编号 = '" & dr("编号") & "'") > 1 Then
MessageBox.Show("已经存在相同数据的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
e.DataRow(e.DataCol.name) = e.OldValue
End If
End If
End Select
根本就用不着删除行,因为这样设置之后,重复值是无法输入的,建议看看这里的示例:
http://www.foxtable.com/help/topics/2481.htm
另一个问题,我不明白你的意思,搞不定的话,你自己分别为不同的表设计一个窗口吧。