DGV wird aus Access gefüllt, Rest Code wird nicht ausgeführt

  • VB.NET

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

    DGV wird aus Access gefüllt, Rest Code wird nicht ausgeführt

    Hallo zusammen
    ich habe folgendes Problem:
    Ich befülle ein Datagridview mit Daten aus einer Access sobald die Daten drin sind soll eine For Schleife Doppelte löschen und bei vorhandenen Eintrag den Hintergrund Grün machen.
    -
    Wenn ich ca 25 - 40 Zeilen habe funktioniert es einwandfrei, sobald es aber über 100 Zeilen sind macht er mir die Farben nicht mehr und der CellContentClick geht auch nicht in dieser DGV
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Datum As Date = FormStart.KalenderMenu.Text
    2. Dim Gruppe As String
    3. Dim Fehlerort As String
    4. MyConn = New OleDbConnection With {
    5. .ConnectionString = FormStart.connString & "Datenbank.accdb"
    6. }
    7. ds = New DataSet
    8. tables = ds.Tables
    9. da = New OleDbDataAdapter("Select Gruppe, Fehlerort, Fehlerart, Lage, Gerät, Modell, Kennnummer,
    10. SUM(Switch(Zählpunkt = 'Zp6 alle', 1)) as Zp6,
    11. SUM(Switch(Zählpunkt = 'Zp7 alle', 1)) as Zp7,
    12. SUM(Switch(Zählpunkt = 'Zp8 alle', 1)) as Zp8, Kommentar, Bild, ID from Vision
    13. WHERE Produktionstag = #" & Format$(Datum, "yyyy-MM-dd") & "# AND (Zählpunkt = 'Zp6 alle' OR Zählpunkt = 'Zp7 alle' OR Zählpunkt = 'Zp8 alle')
    14. GROUP BY Gruppe, Fehlerort, Fehlerart, Lage, Gerät, Modell, Kennnummer, Kommentar, Bild, ID", MyConn)
    15. da.Fill(ds, "Datenbank")
    16. Dim view As New DataView(tables(0))
    17. source1.DataSource = view
    18. DGV_PivotZiel.DataSource = view
    19. MyConn.Close()
    20. MyConn = Nothing
    21. With DGV_PivotZiel
    22. .Columns("Gruppe").Width = 70
    23. .Columns("Gruppe").SortMode = DataGridViewColumnSortMode.NotSortable
    24. .Columns("Fehlerort").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    25. .Columns("Fehlerort").SortMode = DataGridViewColumnSortMode.NotSortable
    26. .Columns("Fehlerart").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    27. .Columns("Fehlerart").SortMode = DataGridViewColumnSortMode.NotSortable
    28. .Columns("Lage").Width = 50
    29. .Columns("Lage").SortMode = DataGridViewColumnSortMode.NotSortable
    30. .Columns("Gerät").Width = 120
    31. .Columns("Gerät").SortMode = DataGridViewColumnSortMode.NotSortable
    32. .Columns("Modell").Width = 120
    33. .Columns("Modell").SortMode = DataGridViewColumnSortMode.NotSortable
    34. .Columns("Kennnummer").Width = 120
    35. .Columns("Kennnummer").SortMode = DataGridViewColumnSortMode.NotSortable
    36. .Columns("Zp6").Width = 50
    37. .Columns("Zp6").SortMode = DataGridViewColumnSortMode.NotSortable
    38. .Columns("Zp7").Width = 50
    39. .Columns("Zp7").SortMode = DataGridViewColumnSortMode.NotSortable
    40. .Columns("Zp8").Width = 50
    41. .Columns("Zp8").SortMode = DataGridViewColumnSortMode.NotSortable
    42. .Columns("Kommentar").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    43. .Columns("Kommentar").SortMode = DataGridViewColumnSortMode.NotSortable
    44. .Columns("Bild").Visible = False
    45. .Columns("ID").Visible = False
    46. End With
    47. For i = DGV_PivotZiel.Rows.Count - 1 To 1 Step -1
    48. Gruppe = DGV_PivotZiel.Rows(i).Cells(0).Value
    49. Fehlerort = DGV_PivotZiel.Rows(i).Cells(1).Value
    50. If DGV_PivotZiel.Rows(i - 1).Cells(0).Value = Gruppe Then
    51. DGV_PivotZiel.Rows(i).Cells(0).Value = String.Empty
    52. End If
    53. If DGV_PivotZiel.Rows(i - 1).Cells(1).Value = Fehlerort Then
    54. DGV_PivotZiel.Rows(i).Cells(1).Value = String.Empty
    55. End If
    56. Next
    57. 'Bis hier geht alles die untere For Schleife macht er nicht mehr
    58. For i = 0 To DGV_PivotZiel.Rows.Count - 1
    59. If DGV_PivotZiel.Rows(i).Cells(11).Value IsNot DBNull.Value Then
    60. DGV_PivotZiel.Rows(i).Cells(6).Style.BackColor = Color.Green
    61. End If
    62. Next


    Eventuell findet ihr den Wurm :/

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

    @Animal2k Setze einen Spoiler um den Code in Deinem ersten Post :!:
    Ich nehme mal an, dass der Code in der Form_Load ausgeführt wird, leider hast Du das uns verschwiegen.
    Wenn dort Exceptions auftreten, werden die ggf. verschluckt.
    Pack das ganze mal in die Form_Shown oder eine Button_Click.
    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!

    Animal2k schrieb:

    Hallo zusammen
    ich habe folgendes Problem:
    Ich befülle ein Datagridview mit Daten aus einer Access sobald die Daten drin sind soll eine For Schleife Doppelte löschen und bei vorhandenen Eintrag den Hintergrund Grün machen.


    doppelte solltest du direkt in deiner SQL-Anweisung ausschliessen
    siehe

    VB.NET-Quellcode

    1. "Select DISTINCT....."


    w3schools.com/sql/sql_distinct.asp

    Animal2k schrieb:

    Vorallem warum geht mein Cellclick Content hier nicht aber wenn es weniger Daten sind geht es schon


    Animal2k schrieb:

    VB.NET-Quellcode

    1. 'Bis hier geht alles die untere For Schleife macht er nicht mehr
    Der gezeigte Code ist höchst fehleranfällig - je nachdem, was für Daten ankommen.
    Leider wird die Methode nicht komplett gezeigt.
    So kann ich nur einen unsachgemässen TryCatch vermuten, der das wunderliche Verhalten verursacht.
    Also meine Vermutung: Bei vielen Daten sind welche dabei, die einen Fehler verursachen. Dann springt er aus der Methode, der unsachgemässe TryCatch catcht aber die Fehlermeldung, und du erfährst nichts davon.
    Allerdings weiteren Code kann er dann ja auch nicht mehr ausführen - also so wäre das beschriebene Verhalten ganz logisch erklärbar.
    Leider wird die Methode nicht komplett gezeigt.


    Das ist der komplette Sub @ErfinderDesRades


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub AlleZp_Alle()
    2. Dim Datum As Date = FormStart.KalenderMenu.Text
    3. Dim Gruppe As String
    4. Dim Fehlerort As String
    5. MyConn = New OleDbConnection With {
    6. .ConnectionString = FormStart.connString & "Datenbank.accdb"
    7. }
    8. ds = New DataSet
    9. tables = ds.Tables
    10. da = New OleDbDataAdapter("Select Gruppe, Fehlerort, Fehlerart, Lage, Gerät, Modell, Kennnummer,
    11. SUM(Switch(Zählpunkt = 'Zp6 alle', 1)) as Zp6,
    12. SUM(Switch(Zählpunkt = 'Zp7 alle', 1)) as Zp7,
    13. SUM(Switch(Zählpunkt = 'Zp8 alle', 1)) as Zp8, Kommentar, Bild, ID from Vision
    14. WHERE Produktionstag = #" & Format$(Datum, "yyyy-MM-dd") & "# AND (Zählpunkt = 'Zp6 alle' OR Zählpunkt = 'Zp7 alle' OR Zählpunkt = 'Zp8 alle')
    15. GROUP BY Gruppe, Fehlerort, Fehlerart, Lage, Gerät, Modell, Kennnummer, Kommentar, Bild, ID", MyConn)
    16. da.Fill(ds, "Datenbank")
    17. Dim view As New DataView(tables(0))
    18. source1.DataSource = view
    19. DGV_PivotZiel.DataSource = view
    20. MyConn.Close()
    21. MyConn = Nothing
    22. With DGV_PivotZiel
    23. .Columns("Gruppe").Width = 70
    24. .Columns("Gruppe").SortMode = DataGridViewColumnSortMode.NotSortable
    25. .Columns("Fehlerort").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    26. .Columns("Fehlerort").SortMode = DataGridViewColumnSortMode.NotSortable
    27. .Columns("Fehlerart").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    28. .Columns("Fehlerart").SortMode = DataGridViewColumnSortMode.NotSortable
    29. .Columns("Lage").Width = 50
    30. .Columns("Lage").SortMode = DataGridViewColumnSortMode.NotSortable
    31. .Columns("Gerät").Width = 120
    32. .Columns("Gerät").SortMode = DataGridViewColumnSortMode.NotSortable
    33. .Columns("Modell").Width = 120
    34. .Columns("Modell").SortMode = DataGridViewColumnSortMode.NotSortable
    35. .Columns("Kennnummer").Width = 120
    36. .Columns("Kennnummer").SortMode = DataGridViewColumnSortMode.NotSortable
    37. .Columns("Zp6").Width = 50
    38. .Columns("Zp6").SortMode = DataGridViewColumnSortMode.NotSortable
    39. .Columns("Zp7").Width = 50
    40. .Columns("Zp7").SortMode = DataGridViewColumnSortMode.NotSortable
    41. .Columns("Zp8").Width = 50
    42. .Columns("Zp8").SortMode = DataGridViewColumnSortMode.NotSortable
    43. .Columns("Kommentar").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    44. .Columns("Kommentar").SortMode = DataGridViewColumnSortMode.NotSortable
    45. .Columns("Bild").Visible = False
    46. .Columns("ID").Visible = False
    47. End With
    48. For i = DGV_PivotZiel.Rows.Count - 1 To 1 Step -1
    49. Gruppe = DGV_PivotZiel.Rows(i).Cells(0).Value
    50. Fehlerort = DGV_PivotZiel.Rows(i).Cells(1).Value
    51. If DGV_PivotZiel.Rows(i - 1).Cells(0).Value = Gruppe Then
    52. DGV_PivotZiel.Rows(i).Cells(0).Value = String.Empty
    53. End If
    54. If DGV_PivotZiel.Rows(i - 1).Cells(1).Value = Fehlerort Then
    55. DGV_PivotZiel.Rows(i).Cells(1).Value = String.Empty
    56. End If
    57. Next
    58. For i = 0 To DGV_PivotZiel.Rows.Count - 1
    59. If DGV_PivotZiel.Rows(i).Cells(11).Value IsNot DBNull.Value Then
    60. DGV_PivotZiel.Rows(i).Cells(6).Style.BackColor = Color.Green
    61. End If
    62. Next
    63. End Sub



    Ich hol mir im Endeffekt nur die Daten von einem Tag aus der Datenbank, meine Schleifen unten sorgen nur für Schöner Wohnen (Übersichtlicher machen)

    Sobald ich einen anderen Tag wähle wo es weniger Daten sind funktioniert alles einwandfrei :/
    @Animal2k Wenn Du den Code debuggst, findest Du sogar die Fehlerzeile; das erwarten wir von Dir:
    Debuggen, Fehler finden und beseitigen
    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!
    echt - siehst du da schon den Fehler?
    Ich sehe nur mögliche Fehler - je nachdem, was für Daten kommen.
    Nachwievor vermute ich einen unsachgemässen TryCatch, der verhindert, dass die Fehler da angezeigt werden, wo sie auftreten.
    Der TryCatch wird in einer anderen Methode sein, welche die hier gezeigte aufruft.