| |

VB.NET - FortgeschritteneEinnahmen, Ausgaben, Auswertungen | |  | Autor: Erichbru | Datum: 17.03.23 12:31 |
| Habe eine Datenbank die ich mit Daten fülle
Meine Tabelle Kontodetails
ID
Buchungstag
Buchungsdatum
Buchungsmonat
Buchungsart
Kategorie
Kommentar
Zahlungsart
Betrag
BuchungsartID
KategorieID
UserID
möchte ich so ähnlich auswerten
wer kann mir dabei helfen ? |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: emaNoN | Datum: 17.03.23 17:44 |
|  |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: Erichbru | Datum: 17.03.23 18:59 |
| ich probiere gerade diesen Code:
Private Function Kosten1(year As Integer) As DataTable
Dim Text As String = ""
Dim dt As DataTable = HBDatenbankDS.Kontodetails
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Me.Cursor = Cursors.WaitCursor
Dim q = From row As DataRow In dt
Let Betrag = row.Field(Of Integer)("Betrag")
Let Buchung = row.Field(Of String)("Buchungsart")
Where year = row.Field(Of Date)("Buchungsdatum").Year _
AndAlso row.Field(Of Integer)("UserID") = aktBenutzerRow.ID _
AndAlso row.Field(Of String)("Buchungsart") <> Text _
Group By art = Buchung Into Sum(Betrag), Count()
Dim df As New DataTable
With df.Columns
.Add("Buchungsart", GetType(String))
.Add("Count", GetType(Integer))
.Add("Betrag", GetType(Double))
End With
For Each el In q
df.Rows.Add(el.art, el.Count, el.Sum)
Next el
Dim bs As New BindingSource With {.DataSource = df}
bs.Sort = "Count DESC"
Dim _Sum As Integer
_Sum = df.AsEnumerable().Sum(Function(row) row.Field(Of Double)( _
"Betrag"))
'Daten in der DGV anzeigen
DGV1.DataSource = bs das geht dann in eine DGV, das Ergebnis passt nicht 1 Ausgabe, 1 Einnahme (es müssten 1 x (-70,00) Ausgabe, 3 x Einnahmen (1.500,00) drin stehen) in meinem Beispiel habe ich einen Fehler warum ?
das Dia wäre auch noch offen |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: Erichbru | Datum: 17.03.23 19:20 |
| OK ich glaube habe die Abfrage falsch geschrieben, da muss ich noch mal ran.
bis später dann --> Danke für die Antwort emaNoN |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: emaNoN | Datum: 18.03.23 18:06 |
| Warum nicht über eine einfache SQL Abfrage?
Ich hab' das mal schnell in einer Access-DB nachgestellt:
Das sollte doch das Ergebnis sein, das du suchst. |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: Erichbru | Datum: 19.03.23 12:26 |
| Hallo und Danke,
im Prinzip haste ja Recht, aber ich möchte ja dahin wie in dem Bild siehe Beitrag Start
mittlerweile habe ich ein Pareto (Verteilungsdiagramm) hinbekommen.
für jede weitere Hilfe von euch Forum Danke
oder wie würdet ihr es machen ?
es ist eine Function geworden:
Private Function GetFreq1(year As Integer) As DataTable
Dim dt As DataTable = HBDatenbankDS.Kontodetails
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt
Where year = row.Field(Of Date)("Buchungsdatum").Year _
Group By art = row.Field(Of String)("Kategorie") Into Count()
Dim df As New DataTable
With df.Columns
.Add("Kategorie", GetType(String))
.Add("Count", GetType(Integer))
.Add("Perc", GetType(Double))
End With
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
bs.Sort = "Count DESC"
Dim sm As Integer = 0
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Häufigkeiten kumulieren
sm += CInt(row("Count"))
Next i
'Werte in Prozentanteile umrechnen
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
row("Perc") = Math.Round(CInt(row("Count")) / sm * 100, 2)
Next i
Dim _Anzahl As Integer
_Anzahl = df.AsEnumerable().Sum(Function(row) row.Field(Of Integer)( _
"count"))
'Daten in der DGV anzeigen
DGV1.DataSource = bs
'den Teil musste ich entfernen da größer 5 KB
'Chart anzeigen
'den Teil musste ich entfernen da größer 5 KB
Return df
End Function |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: Erichbru | Datum: 24.03.23 10:07 |
| Hallo emaNoN,
wie bekomme ich die Daten in eine neue Tabelle, Datagridview für das Chart?
ich habe ja nur die Spalte "Buchungsart" in der Tabelle Kontodetails
dort wird Ausgabe oder Einnahme gespeichert
Dim dt As DataTable = HBDatenbankDS.Kontodetails
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt
Let Gesamtbetrag = row.Field(Of Double)("Betrag")
Where year = row.Field(Of Date)("Buchungsdatum").Year _
Group By art = row.Field(Of String)("Buchungsart") Into Count()
Dim df As New DataTable
With df.Columns
.Add("Ausgabe", GetType(String))
.Add("Einnahme", GetType(String))
.Add("Count", GetType(Integer))
.Add("Gesamtbetrag", GetType(Double))
End With
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
bs.Sort = "Count DESC"
Dim sm As Integer = 0
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Häufigkeiten kumulieren
sm += CInt(row("Count"))
Next i
'Werte in Prozentanteile umrechnen
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
row("Perc") = Math.Round(CInt(row("Count")) / sm * 100, 2)
Next i
Dim _Anzahl As Integer
_Anzahl = df.AsEnumerable().Sum(Function(row) row.Field(Of Integer)( _
"count"))
'Daten in der DGV anzeigen
DGV1.DataSource = bs |  |
Re: Einnahmen, Ausgaben, Auswertungen | |  | Autor: emaNoN | Datum: 24.03.23 15:06 |
| „ich habe ja nur die Spalte "Buchungsart" in der Tabelle Kontodetails“
Du hast doch das Feld „Kategorie“.
 |  |
 | 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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Dezemeber 2023 Holger MöllerArbeitstage berechnen ohne LoopFunktion zum Berechnen eines Datums auf Basis von anzugebenen Arbeitstage (ohne zeitaufwendigen Loop) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|