我正在尝试检查从发件人对象收到的项目编号;如果项目编号已存在,请不要让用户输入。
下面的代码没有达到这个目的,但没有给出任何错误。
Public Sub ClickFunction1(ByVal sender As Object, ByVal e As EventArgs)
Dim itemNo As Integer
itemNo = sender.Name.Substring(3, sender.name.Length - 3)
For Each row As DataGridViewRow In ImsGrid1.Rows
If row.Cells(4).Value = itemNo Then
MsgBox(row.Cells(4).Value)
Exit Sub
Else
Dim str As String = "select MedicineName,SellPrice,ItemNo,QtyAvailable from Items where ItemNo = '" & itemNo & "' "
Dim da As New SqlDataAdapter(str, con)
Dim dt As New DataTable
da.Fill(dt)
Dim total As Double = dt.Rows.Item(0).Item(1)
ImsGrid1.Rows.Add(dt.Rows.Item(0).Item(0), dt.Rows.Item(0).Item(1), "1", total, dt.Rows.Item(0).Item(2), dt.Rows.Item(0).Item(3) - 1)
End If
Next
End Sub
答案 0 :(得分:0)
需要考虑两个概念:
永远不要从您的UI验证您的数据 - 使用基础业务对象。如果您必须执行Cells(4)
之类的操作,则应重新考虑您的方法。
首先验证数据中的重复项(可选的内存中验证),然后在DB中也有一个唯一约束,它会在保存时自动验证您的数据(强制服务器端验证)。不要手动验证数据库。这样做没有多大意义,因为可以在验证和实际保存之间添加数据。
正如@Plutonix所建议的那样,总是使用Option Strict On
,它可能会增加你的代码(所以你可能会试图让它保持关闭),但这实际上有助于在代码复杂性增加时更好地理解,并且是时候了重构。