如何解决VB.NET MS Access:即使 Copies 为 0 或 -1
我正在使用与 .accdb 链接的 VB.NET 开发图书馆管理系统,并想在此代码中添加 If 条件,因此当用户单击借阅按钮并且所选书籍副本为 0 时,应出现错误并记录不会被添加到数据库中。
Try
Dim ds2 As New DataSet
Dim da2 As New OleDbDataAdapter("SELECT copies FROM Book",con)
If da2.Fill(ds2) Then
Dim cb1 As OleDbCommand
cb1 = New OleDbCommand("UPDATE Book SET copies=copies-1 WHERE ISBN=@ISBN",con)
cb1.Parameters.Add("ISBN",OleDbType.Decimal).Value = TextBox1.Text
cb1.ExecuteNonQuery()
MessageBox.Show("Book Borrowed Succesfully!")
Else
MsgBox(MsgBoxStyle.Critical,"Oledb Error")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
解决方法
您需要选择单条数据,即单个 ISBN 可用的副本数。您可以为此使用 .ExecuteScalar
。如果 Copies 大于 0,我们将减少该字段。请注意,我们使用相同的命令、连接和参数。
Private ConStr As String = "Your connection string"
Private Function CheckCopies(isbn As Decimal) As String
Dim message As String
Dim sql = "Select Copies From Book Where ISBN = @ISB;"
Dim AvailableCopies As Integer
Using cmd As New OleDbCommand(sql,New OleDbConnection(ConStr))
cmd.Parameters.Add("@ISB",OleDbType.Decimal).Value = isbn
cmd.Connection.Open()
AvailableCopies = CInt(cmd.ExecuteScalar)
If AvailableCopies > 0 Then
cmd.CommandText = "UPDATE Book SET Copies=Copies-1 WHERE ISBN=@ISB;"
cmd.ExecuteNonQuery()
message = "Check out complete."
Else
message = "No copies available."
End If
End Using
Return message
End Function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。