使用组合框搜索数据库,如果项目在数据库中,将出现提示

Posted

技术标签:

【中文标题】使用组合框搜索数据库,如果项目在数据库中,将出现提示【英文标题】:Search through the database using a combobox, if an item is in a database, prompt will appear 【发布时间】:2014-03-12 15:29:20 【问题描述】:

大家好。

我正在制作一个 POS 和库存管理系统,但到目前为止我遇到了这个特定模块的问题。

将商品添加到采购订单列表时,如果商品已经在采购订单数据库中,系统会提示已经有待处理订单。我已经完成了提示,但是添加到数据库有点混乱。它根本没有做任何事情。当我删除 ds.hasrows 和 while dr.read 条件时,那里的代码有效。这是我的代码:

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

    Ceiling = CInt(txtCeiling.Text)
    TotalQuantity = CurrentItemQuantity + CInt(txtPurchaseQty.Text)

    If TotalQuantity > Ceiling Then
        MsgBox("Exceeds Ceiling Point.")
    Else

        sqlString = "SELECT PRODUCT_ID FROM posinventory.purchaseorder WHERE purchaseorder.PRODUCT_ID = '" & cboProductID.Text & "'"

        cmd = New mysqlCommand(sqlString, con)
        dr = cmd.ExecuteReader

        If dr.HasRows Then
            While dr.Read

                If CurrentItem = dr.Item("PRODUCT_ID") Then

                    MsgBox("Product has pending order.")
                    cboProductID.Focus()

                Else

                    sqlString = "INSERT INTO posinventory.purchaseorder (PRODUCT_ID, PURCHASE_QUANTITY, DATE_PURCHASED, TIME_PURCHASED) VALUES (" & cboProductID.Text & ", '" & txtPurchaseQty.Text & "', '" & txtDate.Text & "', '" & txtTime.Text & "')"

                    Try
                        cmd = New MySqlCommand(sqlString, con)
                        dr = cmd.ExecuteReader
                        dr.Close()
                    Catch ex As Exception
                        MsgBox("Error saving to database. Error is: " & ex.Message)
                        Exit Sub
                    End Try

                    MsgBox("Transaction Complete.")

                    lvOrderList.Items.Clear()

                    sqlString = "SELECT posinventory.purchaseorder.TRANSACTION_ID, posinventory.products.PRODUCT_ID, posinventory.products.PRODUCT_NAME, posinventory.products.SUPPLIER_NAME, posinventory.purchaseorder.PURCHASE_QUANTITY, posinventory.purchaseorder.DATE_PURCHASED, posinventory.purchaseorder.TIME_PURCHASED FROM posinventory.purchaseorder, posinventory.products WHERE posinventory.purchaseorder.PRODUCT_ID = posinventory.products.PRODUCT_ID"
                    cmd = New MySqlCommand(sqlString, con)
                    da = New MySqlDataAdapter(cmd)
                    ds = New DataSet
                    da.Fill(ds, "Table")

                    Dim i As Integer = 0
                    Dim j As Integer = 0

                    For i = 0 To ds.Tables(0).Rows.Count - 1
                        For j = 0 To ds.Tables(0).Columns.Count - 1
                            itemcol(j) = ds.Tables(0).Rows(i)(j).ToString()
                        Next

                        Dim lvi As New ListViewItem(itemcol)
                        Me.lvOrderList.Items.Add(lvi)
                    Next

                    grpCreateOrder.Enabled = False
                    grpOrderList.Enabled = True
                    cboProductID.SelectedIndex = -1
                    txtPurchaseQty.Text = ""
                    txtDate.Text = ""
                    txtTime.Text = ""
                    txtProductName.Text = ""
                    txtSupplier.Text = ""
                    txtQty.Text = ""
                    txtCeiling.Text = ""
                    btnBack.Enabled = True

                End If

            End While

        End If

        dr.Close()

    End If

End Sub

【问题讨论】:

【参考方案1】:

我认为这是因为您在使用 cmd 和 dr 的循环中。当你在那里时,你正在定义一个新的 cmd 和 dr。

尝试使用不同的名称,例如 cmd2、dr2。

【讨论】:

以上是关于使用组合框搜索数据库,如果项目在数据库中,将出现提示的主要内容,如果未能解决你的问题,请参考以下文章

将数据库和项目结果搜索到 datagridview

获取从单选按钮到组合框的数据搜索

根据数据绑定组合框中的选定项目从访问数据库中删除

使用大量项目填充组合框

在剑道组合框中动态添加项目

如果不在列表中,则 MS 访问将项目添加到组合框