微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB.NET MS Access:即使 Copies 为 0 或 -1

如何解决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 举报,一经查实,本站将立刻删除。