Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的组合框值_Vb.net - Fatal编程技术网

vb.net中的组合框值

vb.net中的组合框值,vb.net,Vb.net,最近,我在为一个销售点系统编码,在我的系统中,当在商店工作的人试图在数据库中输入一种新产品时,他们应该选择该产品是否是一块,如果是饮料,应该是一升,如果是梨、苹果等蔬菜,应该是公斤。我创建了一个字符串名称提示(类型),但我得到一个错误,不是每次我插入一个产品类型出现 这是我的密码: konekcija = New MySqlConnection konekcija.ConnectionString = "server=localhost;userid=root;passw

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

这是我的密码:

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()

可能您必须测试所选索引是否等于0:
如果ComboBox3.SelectedIndex=0,则
edmerka=“什么东西”

结束,如果

不硬编码这样的事情。。。并使用组合框的SelectedItem属性

创建一个用于保存组合框选项项的结构

 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
同时


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

使用参数并使用
命令。ExecuteNonQuery()
。您正在执行插入操作,因此不需要
读取器
。您很容易受到SQL注入的攻击。使用。我在插入数据方面没有寻求帮助,它工作正常,该软件用于未连接到internet的本地计算机,而且数据也不是秘密。你的问题太模糊了。。。。。需要更多的细节。您还应该使用类型或类来填充组合框,并查看ComboBox3.SelectedItem,而不是像这样对If列表进行一系列硬编码。并且不要低估安全问题的影响。。。不满的员工可能会造成严重破坏。您应该使用
DirectCast
TryCast
而不是
CType
。只有当您想从其他类型转换并且已经定义了转换运算符时,才应该使用后者。感谢@VisualIncent的提示。我使用CType是因为如果我只是尝试在没有任何转换的情况下分配它,IDE会提示我使用CType方法。我想。。如果你这么说。。。LOL。在这种情况下,我认为CType就足够了,因为我知道源代码是什么。不过,这一点也不错。
在这种情况下,我认为CType就足够了,因为我知道源代码是什么
——尽管只有当你知道源代码是什么时,你才应该使用
Try-/DirectCast
)在许多情况下,
CType
编译为简单的强制转换
CType(Image.FromStream(ms)、Bitmap)
编译成
(Bitmap)Image.FromStream(ms)
,这正是
DirectCast
编译成的。编译器并不愚蠢,这就是为什么VB错误修复程序提供CType的原因。谢谢@puropoix,我在这里通过回答问题而不是问问题学到了更多。。。英雄联盟