Office: (Office 2010) Subtraktion von Datensätzen in Abfrage oder Bericht

Helfe beim Thema Subtraktion von Datensätzen in Abfrage oder Bericht in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo alle zusammen, ich schreibe heute meinen ersten Beitrag, da mir das sonst so hilfreiche Forum keine Lösung angeboten hat. ^^ Ich arbeite gerade... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von DanBa82, 19. August 2012.

  1. Subtraktion von Datensätzen in Abfrage oder Bericht


    Hallo alle zusammen,

    ich schreibe heute meinen ersten Beitrag, da mir das sonst so hilfreiche Forum keine Lösung angeboten hat. ^^

    Ich arbeite gerade an einer Access-Datenbank und stehe vor einem Problem, das vielleicht (hoffentlich) einfacher zu lösen ist, als es den Anschein hat. Ich möchte zwei Datensätze voneinander subtrahieren, entweder schon in der Abfrage, oder in dem dazu gehörigen Bericht. Leider weiß ich nicht wie.

    Ich schildere einmal die grundlegende Idee: Ich habe monatlich Umsätze und ausgezahlte Provisionen, die ich in einer Abfrage bzw. Kreuztabelle bereits schön organisiert habe. Per Bericht kann ich diese ausgeben und ich könnte leicht eine Gesamtsumme bilden. Aber ich brauche eben keine Summe, sondern die Differenz zwischen Umsätzen und Provisionen. Es soll also pro Monat der Umsatz, die Provisionsauszahlung und der verbliebene Gewinn dargestellt werden.

    Im Bericht habe ich das Problem, dass ich nicht genau weiß, wie ich Access klar machen soll, dass es den Wert für Januar (Provisionen) vom Wert für Januar (Umsätze) abziehen soll. Ich kenne mich mit VBA leider so gut wie gar nicht aus. Kann man das denn ohne Code überhaupt lösen? Habt ihr irgendwelche Vorschläge?

    Schönen Gruß
    Daniel

    :)
     
    DanBa82, 19. August 2012
    #1
  2. Hallo Daniel, willkommen im Forum.

    Zwei Datensätze wirst Du schlecht voneinander subtrahieren können.
    Allenfalls Werte aus Feldern in diesen Datensätzen.

    Allerdings ist es schwer, Dir hier fertigen SQL Code zu präsentieren, wenn man nicht weiss, wie Du Deine Daten organisiert hast. Das geht leider aus der Kurzbeschreibung nicht hervor, wo und wie Du die Umsätze und Provisionen speicherst. Könntest Du den Screenshot vom Beziehungsfenster hier hochladen?
     
    hcscherzer, 21. August 2012
    #2
  3. Hi scherzer,

    ich habe drei Bilder angehängt, einmal den (derzeitigen) Bericht ohne Substraktion, einmal die Beziehungen der dahinter liegenden Tabellen, und einmal die Abfrage, die aus den beiden Tabellen entstanden ist. Subtrahiert werden muss natürlich nicht der gesamte Datensatz, lediglich der Buchungswert der Kreuztabelle. Das Feld sieht man in der Abfrage ("Summe").

    Allein das ist schon etwas kompliziert, weil die Daten aus DATEV kommen und in Soll und Haben getrennt sind. Für die gewollte Berechnung ist das aber irrelevant, da die beiden Konten nur entweder Soll oder Haben beinhalten, also habe ich in der Abfrage beides zusammengeführt. Dieses Feld, wie bereits erwähnt "Summe" genannt, ist entscheidend für die Rechnung.

    Danke schon mal für die Hilfe!

    Gruß
    Daniel
     
    DanBa82, 21. August 2012
    #3
  4. Subtraktion von Datensätzen in Abfrage oder Bericht

    Tut mir leid, mit den drei Bildern lässt sich wenig bis nichts anfangen.
    Es wäre interessant, die Abfragen, die zu den Bildern 2 und 3 führen, zu kennen. Also: den SQL-Code.
     
    hcscherzer, 21. August 2012
    #4
  5. Der Code für die Abfrage:
    SELECT [2 Buchungskonten].Kontenbeschreibung, [0 Buchungen].Datum, [Soll]+[Haben] AS Summe
    FROM [2 Buchungskonten] INNER JOIN [0 Buchungen] ON [2 Buchungskonten].Buchungskonto = [0 Buchungen].[0Buchungskonto]
    WHERE ((([0 Buchungen].[0Buchungskonto])=4160)) OR ((([0 Buchungen].[0Buchungskonto])=6771));

    Die darauf basierende Kreuztabelle:
    TRANSFORM Sum([04 Abfr Umsätze].Summe) AS SummevonSumme
    SELECT [04 Abfr Umsätze].Kontenbeschreibung, Sum([04 Abfr Umsätze].Summe) AS [Gesamtsumme von Summe]
    FROM [04 Abfr Umsätze]
    GROUP BY [04 Abfr Umsätze].Kontenbeschreibung
    PIVOT Format([Datum],"mmm") In ("Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez");

    Hilft das etwas mehr?
     
    DanBa82, 21. August 2012
    #5
  6. Vorausgeschickt sei, dass 'Datum' und 'Summe' definitiv schlecht gewählte Feldnamen sind (weil reservierte Worte). Und Feldnamen mit Leerzeichen verbieten sich eigentlich von selbst. Na ja.
    Mit der Pivot-Anweisung kann ich es (heute abend) auch nicht lösen.
    Aber vielleicht mit Unterabfragen so: Code:
     
    hcscherzer, 21. August 2012
    #6
  7. Hi Hans-Christian,

    danke für den Code. Leider gibt er bei mir immer Syntax-Fehler raus. Ich habe es jetzt mehr schlecht als recht gelöst, indem ich die Werte für die eine Datensatz-Gruppe (Provisionen) negativ berechnet habe. Wenn ich im Bericht jetzt eine Summe bilde, kommt die Differenz heraus. Nicht sonderlich elegant, aber vorerst funktioniert es...
    Mir ist klar, dass Access andere Stärken hat als z.B. Excel, das ja häufig missverständlich als Vergleich herangezogen wird. Aber dass einfache Berechnungen so schwer sind, war mir nicht klar *eek.gif*

    Gruß
    Daniel
     
    DanBa82, 22. August 2012
    #7
  8. Subtraktion von Datensätzen in Abfrage oder Bericht

    Moin Daniel.
    Es wäre sinnvoll, die Fehlermeldung hier zu kennen, damit man ggf. weiter helfen kann.
    Die Komplexität der erforderlichen Berechnung hängt immer auch von der Struktur der Daten ab. Und es wäre weitaus einfacher, die Daten zu aggregieren, wenn es ein Feld mit dem Umsatz gäbe, der über das Vorzeichen als Soll oder Haben gekennzeichnet ist. Ich habe in ähnlichen Situationen auch eine entsprechende Abfrage dazwischengeschaltet, die das geradebiegt und dann mit dem DynaSet aus dieser Abfrage weitergearbeitet.
    Wie sehen denn die einzelnen Datensätze aus?
    Konto 4160 nur Soll- und 6771 nur Haben-Buchungen?
    Sollbuchungen als positive und Haben als negative Werte?
     
    hcscherzer, 22. August 2012
    #8
  9. Der Fehler ist folgender:
    Syntaxfehler (fehlender Operator) in Abfrageausdruck 'month(b.Datum) m'

    Auf deinen Hinweis habe ich das Feld Datum umbenannt in datBuchung, aber auch ein Austauschen der Begrifflichkeiten hat leider nichts gebracht.

    Das mit dem Soll und Haben mit +/- ist eine gute Idee, allerdings ist es leider nicht immer so einfach. Die Daten kommen aus einem DATEV-System, d.h. es gibt Bestands- und Ertragskonten, und je nach Konto haben Haben und Soll unterschiedliche Bedeutung. Nur im vorliegenden Fall passt das Konzept Haben = Plus und Soll = Minus.

    Eine Frage hätte ich noch, die allerdings in eine etwas andere Richtung geht. Gibt es die Möglichkeit in Access, "virtuelle" Datensätze zur Zusammenfassung von tatsächlichen Datensätzen zu schaffen? Ich kenne die Option, verschiedene Felder zusammenzufügen, zu addieren etc. und als ein neues Feld auszugeben.
    Meine Überlegung ist recht theoretisch, ich versuche es so praxisnah wie möglich zu beschreiben. In der Datenbank sind Buchungen als Datensätze gesammelt, jeder Buchung ist ein Datum und ein Konto zugewiesen. Nun sind einige Konten für sich allein gestellt recht sinnlos. Für einen übersichtlichen Export der Daten wäre es super, wenn man einzelne Konten zu einem "virtuellen" Konto zusammenfassen könnte, so wie man Felder zu einem neuen Feld kombinieren kann. Die Zusammenfassung in einem neuen Feld macht keinen Sinn, da ich dann keine Möglichkeit hätte, eine Kreuztabelle zu erschaffen, wie es im Controlling üblich ist. Daher eben das "virtuelle" Konto, das wie ein x-beliebiges anderes Konto fungiert, aber eben verschiedene Datensätze aggregiert hat. Geht das überhaupt oder widerspricht das der Logik von Access so sehr, dass auch Programmierung nichts hilft?

    Natürlich geht das alles "mechanisch", indem ich jedem Buchungskonto in einem neuen Feld eine neue "Bezeichnung" zuweise, so dass einige Konten dieselbe Bezeichnung haben, die ich dann verwenden kann. Aber elegant erscheint mir das nicht...

    Sorry falls das zu abgedreht ist. Ich beschäftige mich noch nicht so lange mit Access, daher kenne ich mich noch nicht mit den Beschränkungen aus.
     
    DanBa82, 22. August 2012
    #9
  10. Versuch es mal mit zusätzlichen 'as' vor allen Aliassen:
    Code:
    Ein relativ gut handhabbares Ding sind temporäre Tabellen.
     
    hcscherzer, 22. August 2012
    #10
  11. an irgend einer Stelle wirst Du dem System sagen müssen was zu einem virtuellen Konto gehört. Da scheint mir ein gemeinsamer Schlüssel in den Stammdaten des Konto, auf der dann group by und sum() aufbauen, deutlich eleganter als jede hardcodete Variante in einem Select (z.B. mit Case).

    Gruß
    Günther
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    guenther_p, 23. August 2012
    #11
Thema:

Subtraktion von Datensätzen in Abfrage oder Bericht

Die Seite wird geladen...
  1. Subtraktion von Datensätzen in Abfrage oder Bericht - Similar Threads - Subtraktion Datensätzen Abfrage

  2. Makro für variable Anzahl von Datensätzen

    in Microsoft Excel Hilfe
    Makro für variable Anzahl von Datensätzen: Hallo zusammen, ich habe wieder einmal ein kleines Excel-Problem, bei dem Ihr mir sicherlich helfen könnt. Ich habe eine Excel-Liste, das ist ein Export aus einem anderen Programm (siehe...
  3. VBA - Datensätze ans Ende einer anderen Tabelle kopieren

    in Microsoft Excel Hilfe
    VBA - Datensätze ans Ende einer anderen Tabelle kopieren: Hallo zusammen, ich habe gerade eine "Abrechnungs"-Datei für einen Kindergartenbasar erstellt. Es wäre klasse, wenn man per Schaltfläche die Datensätze aus der Tabelle "Kaeufer" ans Ende der...
  4. Currentdb.Execute delete löscht alle Datensätze trotz Where Bedingung

    in Microsoft Access Hilfe
    Currentdb.Execute delete löscht alle Datensätze trotz Where Bedingung: Hallo Zusammen, ich hoffe, dass mir jemand weiter helfen kann. Ich habe folgendes Problem: Ich habe eine Tabelle (RegieImp), in welche ich aus Excel Daten importiere. Es gibt eine eindeutige ID...
  5. Uhrzeit subtrahieren bei mehr als 24h

    in Microsoft Excel Hilfe
    Uhrzeit subtrahieren bei mehr als 24h: Hallo, ich habe folgendes Problem: Zelle A1 = 11.10.2023 07:54 Zelle A2 = 12.10.2023 07:59 Wie berechne ich die Differenz (A3) ? Wie viele Minuten sind das? Habe es auch schon über die...
  6. VBA Summewenns mit Subtraktion

    in Microsoft Excel Hilfe
    VBA Summewenns mit Subtraktion: Hallo. Ich habe meine Beispiel Tabelle im Anhang. Es soll ein Maschinenbuch sein. In Spalte D und E müssen übereinstimmen. Das Ergebnis soll in G eingetragen werden und die Gesamtmenge schreiben...
  7. Subtraktion des niedrigsten Wertes vom höchsten Wert aus einem bestimmten Bereich

    in Microsoft Excel Hilfe
    Subtraktion des niedrigsten Wertes vom höchsten Wert aus einem bestimmten Bereich: Guten Tag  Ich komme leider bei meiner Auswertung nicht weiter. Dazu habe ich einen Anhang hochgeladen. Ich benötige eine Formel für folgenden Sachverhalt. Wenn in einem bestimmten Bereich der...
  8. Subtraktion in Excel Tabelle mit zeitliche Begrenzung

    in Microsoft Excel Hilfe
    Subtraktion in Excel Tabelle mit zeitliche Begrenzung: Excel 2002 Ich habe eine Tabelle (Kontoauszug), mit den Spalten Datum / Soll / Haben, also etwa so: 01.01.2006 -1.000,00 € 02.01.2006 15.000,00 € 03.01.2006 -3.000,00 € 17.01.2006...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden