【发布时间】:2011-04-14 22:27:01
【问题描述】:
我有一个表单,其中表单第一页上的两个字段构成主键。我想在尝试插入记录之前检查重复值,因为我不希望用户一路浏览表单却发现他们无法提交。因此,当用户尝试转到表单的下一页时,我试图检查重复值。我不太确定该怎么做,果然我得到了一个错误。 (“对象引用未设置为对象的实例。”)问题显然出在我的 if 语句中,“如果 myValue.Length > 0 Then”,但我不确定需要什么来代替它。
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
'get values
Dim checkPrefix = txtCoursePrefix.Text
Dim checkNum = txtCourseNum.Text
'db connectivity
Dim myConn As New OleDbConnection
myConn.ConnectionString = AccessDataSource1.ConnectionString
myConn.Open()
'select records
Dim mySelect As New OleDbCommand("SELECT prefix, course_number FROM tableCourse WHERE prefix='checkPrefix' AND course_number='checkNum'", myConn)
'execute(Command)
Dim myValue As String = mySelect.ExecuteScalar()
'check if record exists
If myValue.Length > 0 Then
CustomValidator1.ErrorMessage = "some exp text"
CustomValidator1.SetFocusOnError = "true"
CustomValidator1.IsValid = "false"
End If
End Sub
我想我会发布最终解决方案:
'select records
Dim mySelect As New OleDbCommand("SELECT 1 FROM tableCourse WHERE prefix=? AND course_number=?", myConn)
mySelect.Parameters.AddWithValue("@checkPrefix", checkPrefix)
mySelect.Parameters.AddWithValue("@checkNum", checkNum)
'execute(Command)
Dim myValue = mySelect.ExecuteScalar()
'check if record exists
If myValue IsNot Nothing Then
CustomValidator1.SetFocusOnError = True
args.IsValid = False
End If
【问题讨论】:
标签: asp.net vb.net validation select duplicates