| |
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 |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. 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
|