最近我编写了一个销售点系统,在我的系统中,当在商店工作的人试图在数据库中输入新产品时,如果产品是一块,如果它应该是一个饮料,他们应该选择是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()
答案 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