Diagramme / Charts ohne direktes Databinding

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    Diagramme / Charts ohne direktes Databinding

    Hallo liebe Community.

    Ich brauche für mein Programm für die Zahlenfreaks natürlich noch eine Chart-Funktion :P
    Allerdings hab' ich mit Charting noch nicht gearbeitet, weshalb ich mich hier an euch wende.

    Ein direktes Databinding kann / möchte ich nicht verwenden, weil die Daten aus diversen Tabellen kommen.
    Ich hätte das für den Anfang gerne recht simpel in etwa so:



    heißt unten werden meine Standorte angezeigt, links die Anzahl der Kunden.
    Mein Code dazu bisher:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub run()
    2. With chtMonatsdaten
    3. .Series.Clear()
    4. .ChartAreas.Clear()
    5. .ChartAreas.Add("Monatsdaten")
    6. End With
    7. With chtMonatsdaten.ChartAreas(0)
    8. .AxisY.Title = "Anzahl"
    9. .AxisX.Title = "Lagerort"
    10. End With
    11. For Each rwStandort In Dts.Standort
    12. Dim kennzahlen = Dts.Kennzahlen.Where(Function(x) x.StandortRow.ID = rwStandort.ID AndAlso x.Datum.Month = _monatNummer AndAlso x.Datum.Year = _setYear)
    13. Dim standortName = rwStandort.Name
    14. Dim lKunden = kennzahlen.Sum(Function(x) x.lKunden)
    15. chtMonatsdaten.Series.Add(New Series(standortName))
    16. With chtMonatsdaten.Series(standortName)
    17. .Points.AddXY(standortName, lKunden)
    18. .ChartType = SeriesChartType.Column
    19. End With
    20. Next
    21. End Sub


    Allerdings werden unten nicht alle Standorte angezeigt und der der angezeigt wird, ist auch noch der Falsche (zumindest der Name, Farbe passt) ;(
    Nur ein Balken kann sein - es sind bisher nur an einem Standort Werte vorhanden. Für die anderen müsste er aber dann 0 anzeigen.


    Wo liegt mein Fehler?
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    Ok, ich bin nun ein Stück weiter.
    Ansicht passt soweit, allerdings werden auf der X-Achse nicht alle Labels angezeigt... (von ca. 13 nur 6 Stück..)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub run()
    2. With chtMonatsdaten
    3. .Series.Clear()
    4. .ChartAreas.Clear()
    5. .ChartAreas.Add("Monatsdaten")
    6. End With
    7. With chtMonatsdaten.ChartAreas(0)
    8. .AxisY.Title = "Anzahl"
    9. .AxisX.Title = "Lagerort"
    10. End With
    11. chtMonatsdaten.Series.Add("Aufträge")
    12. chtMonatsdaten.Series.Add("Kunden")
    13. Dim standorte = Dts.Standort.Where(Function(x) x.Aktiv = True).OrderBy(Function(x) x.Name)
    14. For Each rwStandort In standorte
    15. Dim kennzahlen = Dts.Kennzahlen.Where(Function(x) x.StandortRow.ID = rwStandort.ID AndAlso x.Datum.Month = _monatNummer AndAlso x.Datum.Year = _setYear)
    16. With chtMonatsdaten.Series("Aufträge")
    17. .IsValueShownAsLabel = True
    18. .Points.AddXY(rwStandort.Name, kennzahlen.Sum(Function(x) x.lAuftraege))
    19. .ChartType = SeriesChartType.StackedColumn
    20. End With
    21. With chtMonatsdaten.Series("Kunden")
    22. .IsValueShownAsLabel = True
    23. .Points.AddXY(rwStandort.Name, kennzahlen.Sum(Function(x) x.lKunden))
    24. .ChartType = SeriesChartType.StackedColumn
    25. End With
    26. Next
    27. End Sub


    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

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

    Setz mal das X-Achsen-Intervall auf 1:

    VB.NET-Quellcode

    1. With chtMonatsdaten.ChartAreas(0)
    2. .AxisY.Title = "Anzahl"
    3. .AxisX.Title = "Lagerort"
    4. .AxisX.Interval = 1
    5. End With
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.