Shleifen Problem

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Shleifen Problem

    Moin Moin Liebe VBler

    ich habe mich gestern mal mit MySql beschäftigt

    ich lese die daten wie Folgt aus

    VB.NET-Quellcode

    1. While mydata.Read()


    geht auch soweit so nun mein Problem

    jeder Eintrag wo Ausgelesen werden soll soll er mir einem Button erstellen

    Das geht ja auch mein Problem ist nun

    wie wie kann ich in der

    VB.NET-Quellcode

    1. While mydata.Read()
    schleife eine Control schleife laufen lassen

    damit die Buttons nicht Doppelt erstellt werden

    hier mal ein Kleiner abschnitt



    VB.NET-Quellcode

    1. Sub list()
    2. Timer1.Stop()
    3. Dim myConnectionString As String
    4. Dim con As New MySqlConnection
    5. myConnectionString = SQLL ' Die verbindung zu MYSQL
    6. con.ConnectionString = myConnectionString
    7. Try
    8. con.Open()
    9. ''MessageBox.Show("Verbindung hergestellt ")
    10. Catch myerror As MySqlException
    11. MessageBox.Show("Verbindung konnte nicht hergestellt weil " & myerror.Message)
    12. End Try
    13. Dim mysqladapter As New MySqlDataAdapter
    14. Dim sqlquary = "select user from world1"
    15. Dim Command As New MySqlCommand
    16. Command.Connection = con
    17. Command.CommandText = sqlquary
    18. mysqladapter.SelectCommand = Command
    19. Dim mydata As MySqlDataReader
    20. mydata = Command.ExecuteReader
    21. For Each mycontrol As Control In Me.Controls() 'Listet mir meine Controls auf
    22. While mydata.Read() 'Listet mir meine Data einträge auf
    23. ' AB hier soll unterschieden werden ob User schon als Button existiert wen nicht dann erstelle den Button
    24. 'und trage ihn in der Listbox2 ein
    25. 'wen er schon existiert dann trage ihn in der listbox1 ein
    26. 'die Listboxen sind nur zur besseren Beschreibung Dar diese sind nachher nicht Vorhanden
    27. If mycontrol.Name = mydata(0) Then '<< funktioniert leider nicht
    28. ListBox1.Items.Add(mycontrol.Name)
    29. Else
    30. ListBox2.Items.Add(mydata(0))
    31. Dim box As Button
    32. box = New Button
    33. box.Name = mydata(0)
    34. box.Tag = "User"
    35. box.Height = 50
    36. box.Width = 50
    37. box.Top = emu
    38. box.Left = emu
    39. box.BackColor = Color.Black
    40. box.Visible = True
    41. Me.Controls.Add(box)
    42. emu = emu + 60
    43. End If
    44. End While
    45. Next
    46. End Sub



    ich danke euch schon mal Gruß Torty
    also mein Problem besteht darin das die abfrage #

    VB.NET-Quellcode

    1. If mycontrol.Name = mydata(0) Then '<< funktioniert leider nicht
    2. ListBox1.Items.Add(mycontrol.Name) Else ...

    nicht funktioniert

    ich möchte ja überprüfen ob es das control mit dem Namen

    VB.NET-Quellcode

    1. mydata(0)
    << der Inhalt davon
    schon existiert

    hab noch was gefunden

    VB.NET-Quellcode

    1. If Me.Controls.Find(mydata(0), True) Then
    2. ListBox1.Items.Add(C.Name)
    3. Else


    nur so wird das sicherlich nix

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

    Wie gesagt, dann schau dir mal die Control.Find Methode des .NET Frameworkes an.

    lg.

    Edit:
    Diese Methode ist zwar nicht die, welche ich gemeint habe aber könnte dir auch helfen.
    msdn.microsoft.com/de-de/libra…c64h%28v=VS.80%29.aspx#Y0

    Edit2:
    Ja ich glaube die .Find Methode erwartet einen Delegaten, schau da nochmal genau nach.
    lg.

    LucaWelker

    Warfley schrieb:


    Wenn ich das so richtig sehe, dann hfsst du die while schleife in der for schleife, machs einfach mal anders rum dann müsste es gehen (nur vermutung)

    hab ich gestern schon versucht geht leider nicht

    LucaWelker schrieb:

    http://msdn.microsoft.com/de-de/library/…S.80).aspx#Y0
    Sah zwar gut aus aber will auch net wirklich

    VB.NET-Quellcode

    1. Public Overridable Function FindControl ( id As String ) As Control
    2. 'Usage
    3. Dim instance As Control
    4. Dim returnValue As Control returnValue = instance.FindControl(id) ''<< gibet es nicht ?



    VB.NET-Quellcode

    1. While mydata.Read()
    2. Dim myControl1 As Control = FindControl(mydata(0))
    3. If (Not myControl1 Is Nothing) Then
    4. ' Get control's parent.
    5. Dim myControl2 As Control = myControl1.Parent
    6. ListBox1.Items.Add(mydata(0))
    7. Else
    8. ListBox2.Items.Add(mydata(0))
    9. End If


    wäre es vileicht einfacher nicht die bestehenden controls zu durchsuchen sondern die Listbox ??
    Ich hab es nun wie Folgt gemacht

    1 Alle Controls in eine Listbox Gelistet
    2 in der MYSQL Schleife habe ich die Listbox Inhalte mit der MYSQL Inhalte verglichen

    und es htt super Funktioniert

    mein Fehler war so wie es aussah eine Schleife in der Schleife

    Ich danke euch für die Hilfe mfg Torty