Datenbankcode anpassen...

  • VB.NET
  • .NET 3.5

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

    Datenbankcode anpassen...

    Moin! :)
    Ich habe folgenden Code.
    Und möchte gerne diesen Code noch verbessern.
    In der Select Case lvw.Columns.Count soll es verbessert werden.
    Ist dies möglich dass man diesen Code so ändern kann mit einer Schleife, dass ich diesen nicht immer Wiederholen muss.
    Zum Beispiel Case1 und Case2 usw.… wäre super, wenn man dies ändern kann.
    Freue mich auf Hilfe.
    BIG THX

    VB.NET-Quellcode

    1. Sub GetSQL3(ByVal SQL As String, lvw As ListView)
    2. ' Erweiterte Version...
    3. 'Werte auslesen / anzeigen....
    4. Try
    5. Dim myconn As New SqlConnection
    6. Dim mycmd As New SqlCommand
    7. myconn.ConnectionString = conString
    8. mycmd.Connection = myconn
    9. mycmd.CommandText = SQL
    10. myconn.Open()
    11. Dim dr As SqlDataReader = mycmd.ExecuteReader()
    12. While dr.Read()
    13. Dim SubItem As ListViewItem
    14. With lvw.Items
    15. Select Case lvw.Columns.Count
    16. Case 1
    17. SubItem = .Add(dr.GetValue(0).ToString) ' Eine Spalte füllen..
    18. Case 2
    19. SubItem = .Add(dr.GetValue(0).ToString) ' Eine zwei Spalten füllen..
    20. SubItem.SubItems.Add(dr.GetValue(1).ToString)
    21. Case 3
    22. SubItem = .Add(dr.GetValue(0).ToString) ' Eine drei Spalten füllen..
    23. SubItem.SubItems.Add(dr.GetValue(1).ToString)
    24. SubItem.SubItems.Add(dr.GetValue(2).ToString)
    25. End Select
    26. End With
    27. End While
    28. myconn.Close()
    29. dr.Close()
    30. Catch ex As Exception
    31. MsgBox(ex.Message)
    32. End Try
    33. End Sub


    VB.NET-Quellcode

    1. Select Case lvw.Columns.Count
    2. Case 1
    3. SubItem = .Add(dr.GetValue(0).ToString) ' Eine Spalte füllen..
    4. Case 2
    5. SubItem = .Add(dr.GetValue(0).ToString) ' Eine zwei Spalten füllen..
    6. SubItem.SubItems.Add(dr.GetValue(1).ToString)
    7. Case 3
    8. SubItem = .Add(dr.GetValue(0).ToString) ' Eine drei Spalten füllen..
    9. SubItem.SubItems.Add(dr.GetValue(1).ToString)
    10. SubItem.SubItems.Add(dr.GetValue(2).ToString)
    11. End Select

    Eine bessere Lösung ist gesucht! ?( :huh:
    Visual Basic.NET 8o
    MS-SQL
    8o
    Vielleicht ohne ListView (welches ja doch nur im Details-View verwendet wird und somit durch ein DGV ersetzt werden kann)?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed
    Im meinen Fall möchte ich ein ListView haben.

    @xtts02
    Vielen Dank, der Code scheint zu funktionieren. :thumbup:
    Jedenfalls habe ich noch keinen Fehler feststellen können.
    Ich habe nun meine Lösung hier unten veröffentlicht!

    edit neu:
    Die Lösung: :!:

    VB.NET-Quellcode

    1. Sub GetSQL3(ByVal SQL As String, lvw As ListView)
    2. 'Werte auslesen / anzeigen....
    3. Try
    4. Dim myconn As New SqlConnection
    5. Dim mycmd As New SqlCommand
    6. myconn.ConnectionString = conString
    7. mycmd.Connection = myconn
    8. mycmd.CommandText = SQL
    9. myconn.Open()
    10. Dim dr As SqlDataReader = mycmd.ExecuteReader()
    11. While dr.Read()
    12. Dim SubItem As ListViewItem
    13. SubItem = lvw.Items.Add(dr.GetValue(0).ToString)
    14. For i = 1 To lvw.Columns.Count
    15. If lvw.Columns.Count > i Then SubItem.SubItems.Add(dr.GetValue(i).ToString)
    16. Next
    17. End While
    18. myconn.Close()
    19. dr.Close()
    20. Catch ex As Exception
    21. MsgBox(ex.Message)
    22. End Try
    23. End Sub

    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cheffboss“ ()

    Dann mach gleich

    VB.NET-Quellcode

    1. While dr.Read()
    2. Dim SubItem As ListViewItem
    3. For i = 1 to 25
    4. If lvw.Columns.Count >= i Then SubItem = lvw.Items.Add(dr.GetValue(i - 1).ToString)
    5. Next
    6. End While

    Sollte genauso gehen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @VaporiZed
    Danke, für die Code Optimierung. :)

    @an alle
    Ich habe leider gerade noch ein Problem.
    Ich habe ein Listview1 mit 11 Spalten.
    Wenn ich nun den SQL Befehl ausführe, wird nur in der
    Ersten Spalte die Werte eingetragen.
    (Siehe Bilder).
    Kann mir jemand einen Tipp geben? :?:



    Visual Basic.NET 8o
    MS-SQL
    8o
    Der Code ist falsch. Ich habe nur den Code optimiert, nicht weiter getestet.
    Ich vermute:

    VB.NET-Quellcode

    1. While dr.Read()
    2. Dim SubItem As ListViewItem
    3. SubItem = .Add(dr.GetValue(0).ToString)
    4. For i = 1 to 25
    5. If lvw.Columns.Count > i Then SubItem.SubItems.Add(dr.GetValue(i).ToString)
    6. Next
    7. End While
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.