MySQL Combobox

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von yahoo007.

    MySQL Combobox

    Hallo,

    ich habe eine MySQL Tabelle, mit Daten, die ich Testweise mal so befüllt habe:


    In einer ComboBox (ist zum Datensatz auswählen da) auf meiner Form, lasse ich mir den Wert name anzeigen, dieser ist nicht eindeutig. Ich wollte mal Fragen ob ich mir in der ComboBox weiterhin den Wert von name anzeigen lassen kann, aber ich im Code mit der ID arbeiten kann.
    Also ich wähle in der ComboBox den ersten KKuV Eintrag aus, jetzt arbeite ich mit dem Datensatz 1
    Wenn ich in der ComboBox den zweiten KKuV Eintrag auswähle, möchte ich gerne mit dem Datensatz 2 arbeiten.
    Das einzige was ich zum unterscheiden der Datensätze habe ist die ID, die möchte ich mir aber nicht anzeigen lassen...

    In HTML geht das ja mit

    PHP-Quellcode

    1. <option value="ID">NAME</option>
    , geht das auch irgendwie mit Visual Basic?
    Speicher dir die ID doch einfach in einer Variable (Integer)

    Wie denn? Ich weiß ja gar nicht welchen Datensatz ich jetzt ausgewählt habe.

    Die ComboBox befülle ich so:

    VB.NET-Quellcode

    1. MySqlConnection = mysql_connect.Connection
    2. 'ComboBox mit Gebäuden füllen
    3. query = "SELECT * FROM buildings WHERE user='" & My.Settings.username & "'"
    4. command.Connection = MySqlConnection
    5. command.CommandText = query
    6. Reader = command.ExecuteReader
    7. building_nameCB.Items.Clear()
    8. While Reader.Read
    9. building_nameCB.Items.Add(Reader("name"))
    10. End While
    11. Reader.Close()
    Einfach in selber Reihenfolge mit der du die Datensätze in die Combobox einfügst, die IDs dazu in einen Array oder List of oder was auch immer Speichern und dann kannst du diese mittels des Combobox.SelectedIndex wieder parallel zur eingespeicherten ID diese auslesen.
    C & P Bremse FTW <33

    yahoo007 schrieb:

    Ich wollte mal Fragen ob ich mir in der ComboBox weiterhin den Wert von name anzeigen lassen kann, aber ich im Code mit der ID arbeiten kann.
    Klar - das ist das Grundprinzip einer Datengebundenen Combobox.
    gugge etwa DB-Programmierung ohne Datenbank
    Das Kategorie-DatagridView links könnte ebensogut als Combobox ausgeführt sein.

    Mit Combos und DatagridViewComboboxColumns kann man noch wesentlich mehr treiben, gugge vier Views
    Wie EDR schon sagte gibt es mehrere Möglichkeiten. Die einfachste die mir einfällt ist eine parallele List (of Integer). Diese kannst du dann mit NameDerListe (Combobox1.selectedIndex) aufrufen. Dazu muss jedoch gegeben sein dass du ComboBox und Liste gleichzeitig füllst. Schöner ist das ganze mit einer DataTable. Denn da hast du ID und Name in einer Row und. Blöd ist da aber wieder dass der Name gleich ist, sodass man wieder über den Index arbeiten muss.
    @LaMiy:
    Genau das war die einfachste Variante:

    VB.NET-Quellcode

    1. 'Liste mit den IDs
    2. Dim listINT As New List(Of Integer)
    3. 'ComboBox mit Gebäuden füllen
    4. query = "SELECT * FROM buildings WHERE user='" & My.Settings.username & "'"
    5. command.Connection = MySqlConnection
    6. command.CommandText = query
    7. Reader = command.ExecuteReader
    8. building_nameCB.Items.Clear()
    9. listINT.Clear()
    10. While Reader.Read
    11. listINT.Add(Reader("ID"))
    12. building_nameCB.Items.Add(Reader("name"))
    13. End While
    14. Reader.Close()
    15. Private Sub building_nameCB_SelectedIndexChanged(sender As Object, e As EventArgs) Handles building_nameCB.SelectedIndexChanged
    16. 'SelectedIndex der Liste = SelectedIndex der ComboBox. Testweise in Textbox anzeigen lassen
    17. TextBox1.Text = listINT.Item(building_nameCB.SelectedIndex)
    18. End Sub

    ErfinderDesRades schrieb:

    nochn Tipp: machma Option Strict On!

    Hab ich mal gemacht, Fehler hielten sich noch in Grenzen und waren schnell behoben. Dem Begriff CInt sei dank. Das einzige was ich nicht loswerde ist das hier:

    VB.NET-Quellcode

    1. Dim MySqlConnection As New MySqlConnection
    2. MySqlConnection = mysql_connect.Connection

    Ich lege mir die bestehende Verbindung eigentlich nur in eine Lokale Variable ab, die Verbindung wird hier aufgebaut:
    Modul mysql_connect.vb:

    VB.NET-Quellcode

    1. Public Connection = New MySqlConnection


    Fehler den ich bekomme:
    "Fehler 1 "Option Strict On" lässt keine impliziten Konvertierungen von Object in MySql.Data.MySqlClient.MySqlConnection zu."

    Ich habe ja eigentlich nirgendwo ein Object deklariert?