使用单个(和变化的)列从SQL Server添加Combobox项

时间:2016-07-27 23:18:25

标签: sql-server vb.net

这里的第一个问题,以及预警我对编程很新,只是试图找出基础知识。

基本上我要做的是从我的SQL服务器中选择指定列表中的所有项目,将它们添加到数组中,然后用该数组填充组合框。

SQL Server结构如下: Just a representation

用户将在登录时选择他们正在构建的产品,然后我希望组合框中包含与该项目相关的所有部件。

当前代码示例

Public Class frmProduct
    Private Sub frmProduct_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim mycon As SqlConnection = New SqlConnection('connection string')
        mycon.Open()
        Using mycon
            Dim prodlist As String = frmMain.cmbProduct.SelectedItem
            Dim cmds As String = "SELECT DISTINCT(Product) FROM [Products] where Product = @prodlist"
            Dim cmde As New SqlCommand(sqlt, mycon)
            cmde.Parameters.AddWithValue("@Product", prodlist)
            Dim dr As SqlDataReader = scmd.ExecuteReader
            If dr.HasRows() Then
                cmbFailure.Items.Add(dr.GetString(0))
            End If
            scmd.ExecuteNonQuery()
        End Using

    End Sub
End Class

用户在登录表单上选择产品,所选产品将转移到零件清单表格。

我目前收到的错误很可能是“无效列名产品”中的第一个错误。我认为问题可能是所选产品没有结转,但我添加了一个标签,我将文本更改为“prodlist”,它会准确地更改标签文本。

同样,我对这一切都是新鲜的,所以我为任何明显的错误道歉。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

在您附加的图片中,“Product1,Product2,Product3”是固定列? 如果是,则必须在select语句中使用这些列。这是一个糟糕的设计,但会起作用。 我认为这是一项研究练习,所以稍后,你可以增强你的项目,增加2个表,一个用于产品,另一个用于商店的部分产品。

答案 1 :(得分:0)

有关代码的信息。

Private Sub frmProduct_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim mycon As SqlConnection = New SqlConnection('connection string')
    Dim cmds As String = "SELECT DISTINCT(Product) FROM [Products] where Product = @prodlist"

    Try 
        ' Most of the DB will having a connection fail, so programmer must set a try catch for it '
        mycon.Open()
        Using mycon
            Dim prodlist As String = [Form].[ComBoBox].SelectedItem
            Dim cmde As New SqlCommand(sqlt, mycon)
            cmde.Parameters.AddWithValue("@Product", prodlist)
            Dim dr As SqlDataReader = scmd.ExecuteReader
            If dr.HasRows() Then
                cmbFailure.Items.Add(dr.GetString(0))
            End If
            scmd.ExecuteNonQuery()
            ' For more save for this sql will execute successfully, some of programmer will use Transaction with commit '
            ' Microsoft Link: https://msdn.microsoft.com/en-us/library/5ha4240h(v=vs.110).aspx '
        End Using
        ' mycon.Close() '
    Catch ex As Exception
        MessageBox.Show(ex.Message) ' Exception Message '
        ' [Optional]Release object '
        ' mycon.Close() '
    End Try
End Sub

由于scmd与cmde不同,因此使用它的项目可能会导致结果崩溃 请你解释一下[scmd]是否代表什么?