mehrere Comboboxen in Schleife füllen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    mehrere Comboboxen in Schleife füllen

    Moin Moin zusammen,

    Opa Elbi steht mal wieder auf dem Schlauch und hat Klärungsbedarf.
    Als blutiger VB-Anfänger versuche ich ein bestehendes Programm aus VBA in VB 2010 abzubilden.
    Zur Zeit scheitere ich mangels Wissen an folgender Aufgabe:

    In meiner Form stehen 10 Comboboxen (Bemerkungen) mit den Namen com_bem1, com_bem2 ....bis cm_bem10)
    Diese Boxen sollen aus einer Accessdatenbanktabelle zum Zeitpunkt Form_load gefüllt werden.

    Unter VBA habe ich das folgendermaßen gelöst
    for i = 1 to 10
    Bemerkungen_lesen(i)
    next

    Berkungen_lesen(byval i as integer)
    ...
    Do Until .EOF
    frm_Belegerfassung.Controls("Com_Bem" & i).AddItem .Fields("bemID")
    .movenext
    Loop


    unter VB fülle ich einzelne Boxen mit
    combobox.Items.Add(reader("Datenbankfeld")

    wenn ich selbiges mit me.controls(com_bem" & i) versuche bekomme ich die Meldung
    "item" ist kein Member von System.Windows.Forms.Control :cursing:

    Kann mir jemand dafür eine Lösung geben? Aber bitte in einer Sprache die ein alter OPA von über 70 Lenzen noch verstehen kann :) :) :)

    Vielen lieben herzlichen Dank im voraus für Euer bemühen

    Opa Elbi
    Willkommen im Forum

    Opa Elbi schrieb:

    alter OPA von über 70 Lenzen
    :thumbup:

    VB.NET-Quellcode

    1. me.controls(com_bem" & i)
    gibt Dir natürlich ein Control zurück.
    Wenn Du dieses Control zu dem machst, was es wirklich ist, hat es auch wieder Items.

    VB.NET-Quellcode

    1. For i = 1 To 3 ' Schleife über die Controls
    2. Dim cb As ComboBox = DirectCast(Me.Controls("ComboBox" & i), ComboBox) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    3. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    4. cb.Items.Add("bla") ' und bearbeiten
    5. End If
    6. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Willkommen im Forum

    Opa Elbi schrieb:

    alter OPA von über 70 Lenzen
    :thumbup:

    VB.NET-Quellcode

    1. me.controls(com_bem" & i)
    gibt Dir natürlich ein Control zurück.
    Wenn Du dieses Control zu dem machst, was es wirklich ist, hat es auch wieder Items.

    VB.NET-Quellcode

    1. For i = 1 To 3 ' Schleife über die Controls
    2. Dim cb As ComboBox = DirectCast(Me.Controls("ComboBox" & i), ComboBox) ' Auslesen des entsprechenden Controls, Konvertierung in eine ComboBox
    3. If cb IsNot Nothing Then ' Test auf tatsächliches Vorhandensein
    4. cb.Items.Add("bla") ' und bearbeiten
    5. End If
    6. Next


    @ RodfromGermany
    Danke für Deine schnelle Antwort.

    Ich habe es versucht so zu implementieren aber bei mir ist cb Nothing

    VB.NET-Quellcode

    1. For z = 1 To 10
    2. Dim cb As ComboBox = DirectCast(Me.Controls("ComboBox" & z), ComboBox)
    3. cmd.Connection = con
    4. cmd.CommandText = "SELECT * FROM Bemerkung"
    5. Try
    6. con.Open()
    7. reader = cmd.ExecuteReader
    8. Do While reader.Read
    9. If cb IsNot Nothing Then
    10. cb.Items.Add(reader("bemID"))
    11. End If
    12. Loop
    13. Catch ex As Exception
    14. MessageBox.Show(ex.Message)
    15. Finally
    16. reader.Close()
    17. con.Close()
    18. End Try
    19. Next

    was habe ich falsch gemacht bzw. falsch verstanden ??????



    P.S. COBOL und ABAP konnte ich lesen wie ein Buch, aber VB und VBA bringen micht noch ins Grab :evil:
    Deine ComboBoxen heißen wahrscheinlich anders: com_bem

    Opa Elbi schrieb:

    VB.NET-Quellcode

    1. me.controls("com_bem" & i)
    ------
    War COBOL nicht so was wie ein Pascal-Vorläufer?
    Sei froh, die neuen Sprachen sind wesentlich robuster.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Opa Elbi schrieb:

    P.S. COBOL und ABAP konnte ich lesen wie ein Buch, aber VB und VBA bringen micht noch ins Grab
    cool, wenn einer mit > 70 Lenze solche Witze macht :thumbsup:

    ansonsten ist vb.net komplett anners als alles was du kennst, insbesondere die Datenbänkerei mit ihrem verflixten typisierten Dataset, was immer als Cache zwischen Datenbank und Oberfläche eingespannt wird, und woran dann gebunden wird.

    gugge Forms over Data Videos
    Besten Dank Euch allen. Jetzt hab ich wieder eine Menge zu lesen. Dabei lese ich doch viel lieber einen Krimi als so ein Fachchinesisch. Aber das kommt davon, wenn man der Enkelin sagt..." Opa macht das schon! :D :D 8|

    So, damit habe ich jetzt ein Problem weniger....nun gehts an die anderen 999 8)

    Liebe Grüße
    Opa Elbi

    Opa Elbi schrieb:

    nun gehts an die anderen 999
    Nicht dass Du dann noch 999 Threads aufmachen willst. :D
    Wenn das alles iwie zusammenhängt, beschreib mal das Gesamtproblem.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!