Benutzer mit den meisten Antworten
Kassenbuch Bericht Saldo Vortrag monatlich

Frage
-
Hallo,
nachdem mir hier vor kurzem so schnell geholfen wurde bitte ich um einen Lösungsansatz bei meinem neuen Problemchen. Mein Problem mal wieder der Übertrag des saldo von einem zum anderen Monat.
Im Bericht berechnet mir das Feld Bestand einen Tagessaldo. Gruppiert wird nach Datum (monatlich). Neuer Monat neue Seite. Funktioniert auch Super.
Doch soll mein Kassen-Bericht gefiltert durch ein Textfeld in einem Formular nur einen Monat ausgeben. Wenn die abfrage nach datum gefiltert wird kann ja kein Saldo übertrag vom vorigen Monat berechnet werden.
Kann mir da jemand helfen.
Thomaselll
Antworten
-
hi Thomas,
da wird Jet die Abfrage wohl zu komplex... Einfach umbauen:
SELECT Q.Monat, Avg(Q.SaldoVormonat) AS SaldoVormonat FROM ( SELECT DateAdd("m",1, DateSerial(Year(O.Zeitpunkt),Month(O.Zeitpunkt),1) ) AS Monat, (SELECT SUM(Betrag) FROM vwKasse I WHERE DateValue(I.Zeitpunkt) <= DateSerial(YEAR(O.Zeitpunkt), MONTH(O.Zeitpunkt), 31) ) AS SaldoVormonat FROM vwKasse AS O) Q GROUP BY Q.Monat;
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Peter DoeringMVP, Moderator Sonntag, 20. Februar 2011 11:58
-
hi Thomas,
deine Datenquelle im Unterbericht braucht auch ein künstliches Datumsfeld anlog zum Hauptbericht
DateSerial(YEAR(Zeitpunkt), MONTH(Zeitpunkt), 1) AS Monat
mit dem du die Verknüpfung zwischen Haupt- und Unterbericht machst.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Peter DoeringMVP, Moderator Sonntag, 20. Februar 2011 11:59
Alle Antworten
-
hi Thomas,
das kommt ganz darauf an, wie dein Saldo auf dem Bericht berechnet wird.
Aber wie gesagt, für das Kassenbuch ist das Saldo ein wichtiges Attribut, welches trotz Berechenbarkeit gespeichert werden darf. Im Besonderen gilt bei sämtlichen steuerlich relevanten Zahlen, das oftmals das Speichern besser ist, da du sonst auf Grund von Rundungen in das Problem läufst inkorrekte Summen zu bekommen: Summe der einzelnen Werte <> Summe Total auf Rechnung.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann -
Berechnet wird der Saldo im Bericht in einem ungebundenden Feld Bestand mit Summe über alles.
Speichern wollte ich vermeiden.
Dachte an sowas wie Abfrage2 (Monatsdaten) holt sich daten einer Abfrage1 (Alle Buchungen).
Problem ist halt die weitergabe und berechnung des Tagessaldo in abfrage 1 und 2.
Oder sollte ich ne andere lösung suchen.
An eine Union abfrage von Abfrage 1 dachte ich auch schon Problem halt mit der weitergabe und berechnung
Oder ganz raffiniert meinen bestehenden Kassenbericht öffnen und nur die Seit(en) anzeigen die mit dem Formularfilter (also irgendein Monat) ausgewählt wurde.
Thomaselll -
hallo Thomas,
ohne es jetzt zu testen ist es ein bischen schwierig zu bewerten, aber mit einer UDF auf dem Bericht ist es wohl am einfachsten gelöst. D.h. anstatt der Laufenden Summe ein =Monatssaldo(idEintrag) mit einer Funktion ungefähr so (Luftcode):
Private m_PreviousBalance As Currency Private m_CurrentData As DAO.Recordset Private m_CurrentMonth As Long Public Function Monatssaldo(idEintrag As Long) As Currency Dim Result As Currency Result = 0 If m_CurrentData Is Nothing Then ' Initialisieren der Private Variablen End If m_CurrentData.FindFirst "idEintrag = " & idEintrag If m_CurrentData.NoMatch Then ' Falscher Monat ' Initialisieren der Private Variablen End If Result = m_PreviousBalance Do While Not m_CurrentData.Bof Result = Result + m_CurrentData![Betrag] m_CurrentDate.MovePrevious Loop Monatssaldo = Result End Function
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann -
Hallo,
danke erstmal.
so wie ich als mehr oder weniger besserer anfänger die Funktion deute soll der IDEintrag bei mir meine BuchungsposNr sein. Richtig?Mein Bericht beruht auf einer gruppierten Abfrage:
SELECT DISTINCTROW Sum(qry_Kassendaten.Betra) AS [Summe von Betra], qry_Kassendaten.Nummer, qry_Kassendaten.Datum, qry_Kassendaten.Text, qry_Kassendaten.PositionKassenbuch
FROM qry_Kassendaten
GROUP BY qry_Kassendaten.Nummer, qry_Kassendaten.Datum, qry_Kassendaten.Text, qry_Kassendaten.PositionKassenbuch
ORDER BY qry_Kassendaten.Datum;Denke das funktioniert so nicht.
Thomaselll -
sevus Thomas,
Wie gesagt ohne es komplett jetzt zu lösen ist es schwierig zu beurteilen. Ein anderer möglicher Weg:
Haupt-Bericht mit Unterbericht anstatt Gruppierung
Der Hauptbericht basiert auf eine gruppierten Abfrage.
SELECT DateAdd("m",1 , DateSerial(YEAR(O.Datum), MONTH(O.Datum), 1)) AS [Monat] , (SELECT SUM(Betra) FROM qry_Kassendaten I WHERE DateValue(I.Datum) <= DateSerial(YEAR(O.Datum), MONTH(O.Datum), 31) ) AS [SaldoVormonat] FROM qry_Kassendaten O GROUP BY DateAdd("m",1 , DateSerial(YEAR(O.Datum), MONTH(O.Datum), 1)) ;
Der Unterbericht zeigt dann die entsprechenden Monatsdaten an und du kannst das Saldo über Me.Parent![SaldoVormonat] im Unterbericht nutzen.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann -
Sorry bin halt doch Anfänger.
Hört sich gut an.
Ich sehe was die Hauptbericht Abfrage machen soll:
SELECT DateAdd("m",1 ,
DateSerial(YEAR(O.Datum), MONTH(O.Datum), 1)) AS [Monat] ,
(SELECT SUM(Betra)
FROM qry_Kassendaten I
WHERE DateValue(I.Datum) <=
DateSerial(YEAR(O.Datum), MONTH(O.Datum), 31)
) AS [SaldoVormonat]
FROM qry_Kassendaten OMonat SaldoVormonat
01.02.2011 678,-
01.03.2011 345,-
usw.
Sobald ich aber gruppiere mit :
GROUP BY DateAdd("m",1 ,
DateSerial(YEAR(O.Datum), MONTH(O.Datum), 1)) ;Kommt die Meldung
Sie wollten eine Abfrage ausführen, die den Ausdruck"tbl_Buchungen.Datum" nicht als Teil derAggregatfunktion einschließt.
Thomaselll -
hi Thomas,
da wird Jet die Abfrage wohl zu komplex... Einfach umbauen:
SELECT Q.Monat, Avg(Q.SaldoVormonat) AS SaldoVormonat FROM ( SELECT DateAdd("m",1, DateSerial(Year(O.Zeitpunkt),Month(O.Zeitpunkt),1) ) AS Monat, (SELECT SUM(Betrag) FROM vwKasse I WHERE DateValue(I.Zeitpunkt) <= DateSerial(YEAR(O.Zeitpunkt), MONTH(O.Zeitpunkt), 31) ) AS SaldoVormonat FROM vwKasse AS O) Q GROUP BY Q.Monat;
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Peter DoeringMVP, Moderator Sonntag, 20. Februar 2011 11:58
-
Funkioniert aber gleich nächste Prob. Sorry
Will ich mit dem Assistenten den Bericht mit Unterbericht erstellen kommt:
Sie haben Felder von Datenherkünften gewählt, die der Assistent nicht verbinden kann. Sie haben möglicherweise Felder aus einer Tabelle und einer auf dieser Tabelle basierenden Abfrage gewählt. Sollte dies der Fall sein, versuchen Sie bitte Felder nur aus der Tabelle oder nur aus der Abfrage zu wählen
Thomaselll -
hi Thomas,
deine Datenquelle im Unterbericht braucht auch ein künstliches Datumsfeld anlog zum Hauptbericht
DateSerial(YEAR(Zeitpunkt), MONTH(Zeitpunkt), 1) AS Monat
mit dem du die Verknüpfung zwischen Haupt- und Unterbericht machst.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann- Als Antwort markiert Peter DoeringMVP, Moderator Sonntag, 20. Februar 2011 11:59
-
Hi,
das war klar das ich den Saldo so auf den Unterbericht bekomme, so ist es ja aber nur ein "Übertrag".
Einen Bericht, der mir für jeden neuen Monat eine neue Seite macht, einen Übertrag (Monatssaldo) und fortlaufenden Tagessaldo (Summe über alles) habe ich ja.
Mein Prob war ja z.B.: Vergehen jetzt sag ich mal 12 Monate mit je 2 Seiten habe ich 24 seiten und muß dem Drucker sagen druck mir x -y.
Ich dachte ich kann den Monatssaldo als Anfangsbestand nutzen um in dem gefiltertem Bericht wieder einen Tagessaldo mit Summe über alles zu berechnen.
Thomaselll -
Hallo zusammen,
bin beim stöbern auf diesen doch etwas älteren Beitrag gestoßen und würde ihn gerne aufgreifen.
Denn ich habe ein ganz ähnliches Problem nur einen etwas anderen Ansatz.
Bei diesem wurde mir auch schon geholfen an anderer Stelle.
Auch ich filtere mir den gewünschten Monat aus einem Formular heraus und öffne dann einen Bericht (rptCashBook).
Im Berichtskopf habe ich zwei Textfelder mit folgenden Dateninhalten:
AktSaldo =Summe([betrag])
GesSaldo =DomSumme("Betrag";"qryCashBook")
Im Seitenkopf dann ein Feld txtCarryOver =[gesSaldo]-[AktSaldo].
Hier stimmt die Berechnung schon nicht.
Als Datenquelle für den Bericht habe ich die folgende Abfrage:
SELECT a.crid, a.receiptnumber, a.bookingtypeid, a.amount, Iif([faktor] = 1, [amount]) AS Einnahme, Iif([faktor] = -1, [amount]) AS Ausgabe, [amount] * [faktor] AS Betrag, a.recipient, a.usage, a.account, a.place, a.dateofpayment, a.notes, a.confirmation, a.timestamp, b.bookingtype, b.faktor, Year(Dateadd("m", -2, [dateofpayment])) AS GJ FROM tblbookingtypes AS b INNER JOIN tblcashregister AS a ON b.bookingtypeid = a.bookingtypeid ORDER BY a.dateofpayment;
Ich habe hier mal ein Beispiel hochgeladen. Ist vielleicht einfacher. Bei Fragen gerne melden.
mcCashBook_EntwurfFreue mich über jeden Rat.
Viele Grüße aus Hamburg
Armin
P. S.: Wie es aussieht gibt es auch ein kleines Problemchen beim Wechsel des Geschäftsjahres welches in diesem Fall am 01.03. anfängt.
- Bearbeitet armin.gregor Mittwoch, 6. April 2016 16:08 Nachtrag
-
Am 06.04.2016 schrieb armin.gregor:
bin beim stöbern auf diesen doch etwas älteren Beitrag gestoßen und würde ihn gerne aufgreifen.
Denn ich habe ein ganz ähnliches Problem nur einen etwas anderen Ansatz.Dieser Thread ist als erledigt markiert und dieser Thread ist sehr alt
und er ist nicht von dir. Fremde Threads kapert man nicht.Erstelle bitte einen neuen eigenen Thread und liefere mehr Infos zum
OS und zur verwendete Access-Version, Danke.Servus
Winfried
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm Access-Stammtisch: http://www.access-muenchen.de
NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/
vbeTwister: http://www.vbetwister.com/