vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Filterstring 
Autor: Manfred X
Datum: 21.03.18 14:12

Mein Tipp:
Baue Dir eine Datatable mit aggregierten Werten und
binde das Chartcontrol an diese Tabelle.

Beispiel für eine untypisierte Tabelle:
Public Class frmFilterAggregate
 
    Dim dt As New DataTable
    Dim bs As New BindingSource
    Dim dgv As New DataGridView With _
        {.Parent = Me, .DataSource = bs}
 
    Private Sub frmFilterAggregate_Load(sender As Object, _
        e As EventArgs) Handles MyBase.Load
 
        'Testspalten und Testdaten
        With dt.Columns
            .Add("ID", GetType(Integer))
            .Add("Datum", GetType(DateTime))
            .Add("Einnahmen", GetType(Decimal))
            .Add("Ausgaben", GetType(Decimal))
        End With
 
        Dim cal As System.Globalization.Calendar =
            System.Globalization.CultureInfo.InvariantCulture.Calendar
 
        With dt.Rows
            For i As Integer = 1 To 1000
                .Add(i, Randomdate(New DateTime(2000, 1, 1, cal)),
                     RandomMoney(100, 1000), RandomMoney(100, 1000))
            Next i
        End With
 
        'zu filterndes Jahr
        Dim year As Integer = 2000
 
        'Tabelle mit aggregierten Werten
        Dim dtx As New DataTable With {.TableName = "DTX"}
        dtx.Columns.Add("Monat")
        dtx.Columns.Add("Einnahmen", GetType(Decimal))
        dtx.Columns.Add("Ausgaben", GetType(Decimal))
 
        'Monats-Zeilen erstellen
        For r As Integer = 1 To 12
            dtx.Rows.Add(r, 0, 0)
        Next r
 
        'monatsbezogene Summen bilden
        For i As Integer = 0 To dt.Rows.Count - 1
 
            Dim datum As DateTime = _
               DirectCast(dt.Rows(i)("Datum"), DateTime)
 
            If datum.Year = year Then
                Dim sum As Decimal = _
                    CDec(dtx.Rows(datum.Month - 1)("Einnahmen"))
                sum += CDec(dt.Rows(i)("Einnahmen"))
                dtx.Rows(datum.Month - 1)("Einnahmen") = sum
 
                sum = CDec(dtx.Rows(datum.Month - 1)("Ausgaben"))
                sum += CDec(dt.Rows(i)("Ausgaben"))
                dtx.Rows(datum.Month - 1)("Ausgaben") = sum
            End If
        Next i
 
        bs.DataSource = dtx
    End Sub
 
 
    Dim rndm As New Random(1234)
 
    Private Function Randomdate(ByVal start As DateTime) As DateTime
        Return start.AddDays(rndm.Next(0, 1000))
    End Function
 
 
    Private Function RandomMoney(min As Decimal, _
        max As Decimal) As Decimal
 
        Return CDec(min + rndm.NextDouble * (max - min))
    End Function
 
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Filterstring1.448Knabber21.03.18 12:46
Re: Filterstring806Manfred X21.03.18 12:54
Re: Filterstring764Knabber21.03.18 13:03
Re: Filterstring828Manfred X21.03.18 14:12
YValueMembers: nimmt nur einen Member pro Serie777Manfred X21.03.18 16:17
Re: Filterstring806Knabber21.03.18 15:40
Re: Filterstring750Manfred X21.03.18 15:49
Re: Filterstring766Knabber21.03.18 15:57
Re: Filterstring750Manfred X21.03.18 16:05
Re: Filterstring760Knabber21.03.18 16:45
Chart-Examples833Manfred X21.03.18 17:10
Re: Chart-Examples820Knabber21.03.18 20:02
Re: Mittellinie767Manfred X21.03.18 20:42
Re: Mittellinie767Knabber21.03.18 22:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel