Ostatnio kodowałem punkt sprzedaży, w moim systemie, gdy ludzie, którzy pracują w sklepie, próbują wprowadzić nowy produkt w bazie danych, powinni wybrać, jeśli produkt jest elementem, jeśli jest napójem, powinien być L (litr) , jeśli jest to warzywa, takie jak gruszki, jabłka (kg) kilogramy. Stworzyłem końcówkę nazwisk (typ), ale dostaję błąd, a nie za każdym razem, gdy pojawiam się produkt Typ pojawia się.

Oto mój kod:

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
Trajkovski 16 luty 2017, 20:05

2 odpowiedzi

Najlepsza odpowiedź

Może musisz przetestować, czy wybrany indeks jest równy 0:
If ComboBox3.SelectedIndex = 0 Then edmerka = "something" End If

0
J.Lgl 16 luty 2017, 17:15

Nie trzej trudnych kodów takich jak ... i użyj własności Selective of Combo Boxes.

Utwórz strukturę do przechowywania elementów opcji 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

Następnie, gdzie zainicjujesz Combobox, użyj poniższych.

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

Następnie w podprogramie po prostu użyj ...

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

Jeśli pozycja 0 jest czymś w rodzaju "Wybierz", musisz dodać pierwszy element za pomocą wartości, dla której możesz przetestować. Następnie przetestuj go po powyższej linii.

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

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

również

Jak wspominali inni, użyj parametrów w zapytaniu, więc nie jesteś podatny na wstawienie SQL. Może to być zamknięta sytuacja biurowa, ale nie lekceważ skutków problemu bezpieczeństwa ... niezadowolonych pracowników może spowodować spustoszenie.

1
Trevor_G 16 luty 2017, 18:16