Combobox/Chart

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von echnaton.

    Combobox/Chart

    Hallo
    Ich habe ein Problem mit dem Chart-Contol bzw Combobox
    Für mich nicht zu erklären.
    also
    Ich möchte in einem Chart-Diagramm Einnahmen und Ausgaben gegenüberstellen. Das klappt auch soweit.
    Der Code ist folgender

    [vbnet Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Me.Ein_AusgabenTableAdapter.Fill(Me.HaushaltskasseDataSet.Ein_Ausgaben)
    Me.EintraegeTableAdapter.Fill(Me.HaushaltskasseDataSet.Eintraege)
    Me.EinnahmenTableAdapter.Fill(Me.HaushaltskasseDataSet.Einnahmen)

    With Chart

    Chart.Series(0).Points.AddXY("Januar", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Januar" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Februar", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Februar" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("März", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "März" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("April", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "April" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Mai", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Mai" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Juni", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Juni" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Juli", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Juli" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("August", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "August" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("September", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "September" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Oktober", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Oktober" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("November", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "November" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())
    Chart.Series(0).Points.AddXY("Dezember", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Dezember" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Einnahmen).Sum())

    Chart.Series(1).Points.AddXY("Januar", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Januar" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Februar", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Februar" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("März", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "März" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("April", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "April" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Mai", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Mai" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Juni", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Juni" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Juli", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Juli" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("August", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "August" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("September", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "September" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Oktober", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Oktober" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("November", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "November" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    Chart.Series(1).Points.AddXY("Dezember", (From r In HaushaltskasseDataSet.Eintraege Where r.Monat = "Dezember" And r.Jahr = cbx_Jahr.Text Select r.Betrag_Ausgaben).Sum())
    End With

    End Sub] [/vbnet]

    Wenn dieser Code im Form_Load ist, wird das Diagramm richtig dargestellt. Auf der Form ist außerdem eine
    Combobox mit Items das aus Jahreszahlen besteht. also 1019, 2020, 2021 usw

    Lege ich diesen Code in

    VB.NET-Quellcode

    1. Private Sub cbx_Jahr_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx_Jahr.SelectedIndexChanged

    dann bekomme Ich eine Fehlermeldung.
    Aber dort gehört der Code hin. Bei auswahl in der Combobox wird dann das Diagramm neu gezeichnet
    Hoffe da kann jemand helfen
    Gruß
    Sabine
    Bilder
    • 2019-01-30 19_53_33-.png

      141,96 kB, 1.782×705, 76 mal angesehen
    Bitte erstmal den Post richtig formatieren, da hinter dem [vbnet das "]" fehlt. Wie Du siehst, wird nämlich kein Code angezeigt, sondern nur plain Text.

    echnaton schrieb:

    Aber dort gehört der Code hin.
    Naja, nö, würd ich sagen. Von wegen Trennung der Klassenbelange. Aber das ist ein anderes Thema.

    Folge der Fehlermeldung gedanklich und Du siehst: Mach als erste Zeile Deines SelectedIndexChanged-EventHandlers eine Überprüfung, ob cbx_Jahr.Text leer ist.
    Und mach bitte Option Strict On: And r.Jahr = cbx_Jahr.Text? 1. AndAlso wäre sinnvoller und entweder ist das Jahr in der Tabelle eine Textspalte (warum???) oder - wie vermutet - ist Option Strict Off
    Aber es ist bei dem Konstrukt schwer rauszufinden, was jetzt das Problem ist. Vielleicht ist es nicht die ComboBox und deren Text. Vielleicht ist es Series(0) oder einer der anderen Ausdrücke. Fahre mit dem Cursor über die Einzelbestandteile des Gesamtausdrucks, wenn der Fehler kommt und VS zeigt Dir, wo welche Werte die Ausdrücke zu dem Zeitpunkt haben. So sollte der Fehler schnell zu finden sein.
    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.
    Hallo
    Option Strict ist immer on
    Werde mal deinen Rat befolgen.

    Trotzdem läuft es im Form_Load einwandfrei.

    nur eben im " cbx_Jahr_SelectedIndexChanged " nicht

    Habe natürlich auch ein ganz normales Datum in der tabelle (Shortdate)
    zusätzlich noch Monat und Jahr als string (ist für mich eine bessere Übersicht und sollte nur für die Filterung Dienen)
    Werde alles mit "ansAlso" umcoden

    echnaton schrieb:

    Option Strict ist immer on
    :thumbup:
    Was mir gerade noch auffällt: ...Point.AddXY("Januar", ...)Bin gerade verwirrt, dass Du als X-Wert nen String übergibst. Aber wenn's klappt ...
    Du kannst auch vor der gezeigten fehlerbehafteten Zeile einfach mal einer Double-Variablen den LINQ-Ausdruck übergeben und dann bei ...Points.AddXY("Januar", DeineDoubleVariable). Dann kannst Du schon mal feststellen, ob der Compiler ein Problem mit dem LINQ-Ausdruck hat oder mit einem Chart-Objekt-Teil.
    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.