ComboBox mit Daten aus SQL Datenbank füllen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Speedy51.

    ComboBox mit Daten aus SQL Datenbank füllen

    Hallo brauche eure Hilfe:

    Ich habe eine ComboBox die ich so gefüllt habe:

    VB.NET-Quellcode

    1. Dim tsmannschaftrot As New SoccerDBTableAdapters.mannschaftTableAdapter
    2. Dim m1 As SoccerDB.mannschaftDataTable = tsmannschaftrot.GetData
    3. mannschaft1.ItemsSource = m1
    4. mannschaft1.DisplayMemberPath = "mname"
    5. mannschaft1.SelectedValuePath = "idmannschaft"

    Die Combobox ist in einem extra Fenster.

    Im eigentlichen MainWindow möchte ich jetzt in einen Textfeld das stehen haben was in der Combobox nun ausgewählt wurde wie bewerkstellige ich das?
    Versuch mal fogendes:

    Quellcode

    1. DeinMainWindow.DeinTextfeld.Text = DeinExtraFenster.DeineCombobox.SelectedItem.ToString


    Das müsste beispielsweise in das SelectedIndexChange-Event der Combobox, oder jedes andere Event, durch welches der Teil ausgeführt werden soll.
    Hmm also wenn ich das jetzt richtig verstehe füllst du deine Comboboc mit einem kompletten DataGrid-Element. Dementsprechend wird im Textfeld die Klasse ausgegeben. Wird denn in der Combobox alles richtig angezeigt? Ich vermute nämlich, dass da nur ein String reingehört, wie der Name der Mannschaft, wenn ich den Code richtig gelesen habe. Dann sollte es auch mit dem Übertragen funktionieren.
    also die Combobox wird richtig angezeigt alle Mannschaften sind da...

    Es gibt mehrer Comboboxen hier:

    VB.NET-Quellcode

    1. Dim tsmannschaftrot As New SoccerDBTableAdapters.mannschaftTableAdapter
    2. Dim m1 As SoccerDB.mannschaftDataTable = tsmannschaftrot.GetData
    3. mannschaft1.ItemsSource = m1
    4. mannschaft1.DisplayMemberPath = "mname"
    5. mannschaft1.SelectedValuePath = "idmannschaft"
    6. Dim tsmannschaftblau As New SoccerDBTableAdapters.mannschaftTableAdapter
    7. Dim m2 As SoccerDB.mannschaftDataTable = tsmannschaftblau.GetData
    8. mannschaft2.ItemsSource = m2
    9. mannschaft2.DisplayMemberPath = "mname"
    10. mannschaft2.SelectedValuePath = "idmannschaft"
    11. Dim tsNamen As New SoccerDBTableAdapters.spielerTableAdapter
    12. Dim t As SoccerDB.spielerDataTable = tsNamen.GetData
    13. spieler1r.ItemsSource = t
    14. spieler1r.DisplayMemberPath = "name"
    15. spieler1r.SelectedValuePath = "idspieler"
    16. Dim tsNamen2 As New SoccerDBTableAdapters.spielerTableAdapter
    17. Dim t2 As SoccerDB.spielerDataTable = tsNamen.GetData
    18. spieler2r.ItemsSource = t2
    19. spieler2r.DisplayMemberPath = "name"
    20. spieler2r.SelectedValuePath = "idspieler"
    21. Dim tsNamen3 As New SoccerDBTableAdapters.spielerTableAdapter
    22. Dim t3 As SoccerDB.spielerDataTable = tsNamen.GetData
    23. spieler1b.ItemsSource = t3
    24. spieler1b.DisplayMemberPath = "name"
    25. spieler1b.SelectedValuePath = "idspieler"
    26. Dim tsNamen4 As New SoccerDBTableAdapters.spielerTableAdapter
    27. Dim t4 As SoccerDB.spielerDataTable = tsNamen.GetData
    28. spieler2b.ItemsSource = t4
    29. spieler2b.DisplayMemberPath = "name"
    30. spieler2b.SelectedValuePath = "idspieler"


    die Comboboxen und der code dazu ist in einem Fenster welches nach einem Klick auf ein Button im MainWindow aufgeht
    falls dan bei dem neuen Fenster auf ok gedrückt wird ,wird true zurück gesendet

    VB.NET-Quellcode

    1. If fenster.DialogResult = True Then


    und falls dies der Fall sein sollte sollen die Namen die in den Comboboxen ausgewählt wurden in ein Textfeld eingetragen werden

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Speedy51“ ()

    Geil hat gefunzt :D echt klasse vielen dank euch !!!!

    edit:
    zu früh gefreut funzt nicht immer:
    wenn ich eine Combobox leer lasse kommt dieser fehler:


    "Object reference not set to an instance of an object."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Speedy51“ ()

    So what?

    Guter Stil ist immer, zu prüfen, ob etwas auch möglich ist und nicht einfach davon auszugehen, DASS es so ist.

    if combobox.selecteditem isnot nothing then
    if typeof combobox.selecteditem is datarowview then
    usw

    alternativ:
    if combobox.selecteditem isnot nothing andalso typeof combobox.selecteditem is datarowview
    ' blup
    else
    ' textbox löschen
    endif
    dan muss ich das aber für alle einzel machen oder nicht?

    VB.NET-Quellcode

    1. If Not fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    2. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    3. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    4. End If

    wenn ich das so mache wird es angezeigt aber nur dan wenn alle boxen ausgewählt wurden
    falls eine box nicht ausgewählt wird wird da ncihts eingetragen im textbox


    edit:

    ok habs jetzt so hingekriegt:


    VB.NET-Quellcode

    1. If Not fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    2. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    3. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    4. End If
    5. If fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    6. spielerrotname.Text = DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    7. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    8. End If
    9. If Not fenster.spieler1r.SelectedIndex < 0 And fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    10. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString()
    11. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    12. End If
    13. If Not fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    14. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    15. spielerblauname.Text = DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    16. End If
    17. If Not fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And fenster.spieler2b.SelectedIndex < 0 Then
    18. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString() + vbNewLine + DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    19. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString()
    20. End If
    21. If fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    22. spielerrotname.Text = DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    23. spielerblauname.Text = DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    24. End If
    25. If Not fenster.spieler1r.SelectedIndex < 0 And fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And fenster.spieler2b.SelectedIndex < 0 Then
    26. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString()
    27. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString()
    28. End If
    29. If fenster.spieler1r.SelectedIndex < 0 And Not fenster.spieler2r.SelectedIndex < 0 And Not fenster.spieler1b.SelectedIndex < 0 And fenster.spieler2b.SelectedIndex < 0 Then
    30. spielerrotname.Text = DirectCast(fenster.spieler2r.SelectedItem, System.Data.DataRowView)("name").ToString()
    31. spielerblauname.Text = DirectCast(fenster.spieler1b.SelectedItem, System.Data.DataRowView)("name").ToString()
    32. End If
    33. If Not fenster.spieler1r.SelectedIndex < 0 And fenster.spieler2r.SelectedIndex < 0 And fenster.spieler1b.SelectedIndex < 0 And Not fenster.spieler2b.SelectedIndex < 0 Then
    34. spielerrotname.Text = DirectCast(fenster.spieler1r.SelectedItem, System.Data.DataRowView)("name").ToString()
    35. spielerblauname.Text = DirectCast(fenster.spieler2b.SelectedItem, System.Data.DataRowView)("name").ToString()
    36. End If


    danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Speedy51“ ()

    Brauche nochmal eure Hilfe also:

    Ich habe ein MainWindow auf dem 2 Button sind , wen man auf einen der 2 buttons klickt öffnet sich ein fenster mit 4 comboboxen(Team Rot Spieler 1,Team Rot Spieler 2,Team Blau Spieler 1,Team Blau Spieler 2) wo man die namen auswählen kann
    welche von einer msql datenbank kommen.
    Wenn man dort die Namen ausgewählt hat und auf ok gedrückt wird wird true zurück gesendet und die Namen werden in 2 Textboxen eingetragen mit +vbnewline+

    und wenn man jetzt auf den anderen Button im Mainwindow klickt sollte das spiel losgehen und ein Eintrag sollte in meiner Msql Datenbank eingetragen werden so:

    VB.NET-Quellcode

    1. tsGame.Insert(Now, player1r, player2r, player1b, player2b, mannschaft1, mannschaft2, 1)
    2. game = tsGame.GetDataByLastIdGame.Rows(0)


    Aber wenn man jetzt ein 1 vs 1 möchte also bei den Combobxen blos Team Rot Spieler 1 und Team Blau Spieler 1 auswählt und die 2 anderen Comboboxen leer lässt,
    wird ja bei den leeren comboboxen "nothing" gesendet und ich bekomm den fehler:


    Quellcode

    1. The INSERT statement conflicted with the FOREIGN KEY constraint "FK_game_mannschaft". The conflict occurred in database "soccer", table "dbo.mannschaft", column 'idmannschaft'. The statement has been terminated.


    Könnt ihr mir helfen wie ich das bewerkstellige?