vb.net中的组合框值

时间:2017-02-16 17:05:56

标签: vb.net

最近我编写了一个销售点系统,在我的系统中,当在商店工作的人试图在数据库中输入新产品时,如果产品是一块,如果它应该是一个饮料,他们应该选择是L(升),如果是蔬菜,如梨,苹果(KG)公斤。我创建了一个字符串名称提示(类型),但我得到一个错误,不是每次我插入一个类型出现的产品。

这是我的代码:

konekcija = New MySqlConnection
    konekcija.ConnectionString =
        "server=localhost;userid=root;password=1234;database=baza;port=3307"
    Dim READER As MySqlDataReader
    Dim kupovnacena As Double
    Dim prodaznacena As Double
    Dim kolicina As Double
    Dim profit As Double
    Dim ddv As Double
    Dim mkpr As String
    Dim edmerka As String
 If ComboBox3.SelectedIndex = 1 Then


            edmerka = "парче"


        End If
        If ComboBox3.SelectedIndex = 2 Then


            edmerka = "кг"


        End If
        If ComboBox3.SelectedIndex = 3 Then


            edmerka = "мг"


        End If
        If ComboBox3.SelectedIndex = 4 Then


            edmerka = "Л"


        End If

 COMMAND.Connection = konekcija

        COMMAND.CommandText = "INSERT INTO baza.artikli VALUES(@kod,@naziv,@nabavna,@prodazna,@ddv,@kolicina,@opis,@opis2,@mkproizvod,@profit,@proizvoditel,@edmerka)"
        COMMAND.Prepare()



        COMMAND.Parameters.AddWithValue("@kod", TextBoxBarkod.Text)
        COMMAND.Parameters.AddWithValue("@naziv", TextBoxNaziv.Text)
        COMMAND.Parameters.AddWithValue("@nabavna", TextBoxKupovna.Text)
        COMMAND.Parameters.AddWithValue("@prodazna", TextBoxProdazna.Text)
        COMMAND.Parameters.AddWithValue("@ddv", ddv)
        COMMAND.Parameters.AddWithValue("@kolicina", TextBoxKolicina)
        COMMAND.Parameters.AddWithValue("@opis", TextBoxOpis.Text)
        COMMAND.Parameters.AddWithValue("@opis2", TextBoxOpis2.Text)
        COMMAND.Parameters.AddWithValue("@mkproizvod", mkpr)
        COMMAND.Parameters.AddWithValue("@profit", profit)
        COMMAND.Parameters.AddWithValue("@proizvoditel", TextBoxProizvoditel.Text)
        COMMAND.Parameters.AddWithValue("@edmerka", edmerka)


        COMMAND.ExecuteNonQuery()

2 个答案:

答案 0 :(得分:1)

不要硬编码那样的东西......并使用组合框的SelectedItem属性。

创建一个结构来保存您的ComboBox选项。

 Private Structure ListItem
        Public Value As String
        Public Name As String
        Public Sub New(New_Name As String, New_Value As String)
            Value = New_Value
            Name = New_Name
        End Sub
        Public Overrides Function ToString() As String
            Return Name
        End Function
    End Structure

然后在初始化组合框的地方使用以下内容。

    ComboBox3.Items.Add(New ListItem("Whatever", "парче"))
    ComboBox3.Items.Add(New ListItem("This", "кг"))
    ComboBox3.Items.Add(New ListItem("Means", "мг"))
    etc.

然后在您的子程序中使用......

Dim edmerka As String = DirectCast(ComboBox3.SelectedItem, ListItem).Value

如果项目0类似于“请选择”,那么您需要添加一个可以测试的值的第一个项目。然后在上面的行之后测试它。

ComboBox3.Items.Add(New ListItem("Whatever", "")) 'Added before the others

If emberka ="" then
    'warn user and exit sub
end if

同时

正如其他人提到的那样,在查询中使用Paramaters,这样您就不会受到sql插入的影响。这可能是一个封闭的办公室情况,但不要低估安全问题的影响...... 心怀不满的员工可能会造成严重破坏。

答案 1 :(得分:0)

也许您必须测试所选索引是否等于0:
If ComboBox3.SelectedIndex = 0 Then edmerka = "something" End If