这是我目前的代码:
Dim query As String = "SELECT * FROM tblPiglets WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig"
Using cmd As New OleDbCommand(query, con)
With cmd.Parameters
.AddWithValue("@week", txtWeek.Text)
.AddWithValue("@so", txtSo.Text)
.AddWithValue("@pig", txtPiglet.Text)
End With
Dim dr As OleDbDataReader = cmd.ExecuteReader()
While dr.Read
Dim loc As String
loc = dr("CurrentLocation").ToString()
If loc = ComboBox1.Text Then
confirmed()
Else
invalid()
End If
End While
End Using
第一个用户有义务输入唯一的ID,即周,母猪的顺序和编号。然后,它会检查所选项目的CurrentLocation
字段是否与ComboBox1.Text
相同。如果是,请继续,否则,错误
但是,当用户插入不存在的数据时,会发生 Nothing 。比如,我有3个数据(唯一“id”“)。
如果我尝试输入2-1-1,不存在,则没有任何反应。我想抓住这个,所以用户会知道它是无效的输入。
答案 0 :(得分:3)
您需要自己检查是否有任何结果。对于SQL查询,如果它不返回任何行,则不是错误 以下代码是此类检查的示例:
Dim dr As OleDbDataReader = cmd.ExecuteReader()
If dr.Read() Then
Do
Dim loc As String
loc = dr("CurrentLocation").ToString()
If loc = ComboBox1.Text Then
confirmed()
Else
invalid()
End If
Loop While dr.Read()
Else
' Add code for no records here
End If
请注意,如果您想要专门检查无效ID,则需要为此添加特殊检查。以上示例仅检查是否返回了任何行。原因也可能是周或没有数据。
答案 1 :(得分:0)
添加一些检查dr不为空的代码。
If Not IsNothing(dr) Then
While dr.read....
Else
'No records
End If