AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Offene Posten: Artikel mit LIST anhägen vervielfacht Summe
Thema durchsuchen
Ansicht
Themen-Optionen

Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

Ein Thema von BlueStarHH · begonnen am 4. Feb 2018 · letzter Beitrag vom 5. Feb 2018
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#1

Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 4. Feb 2018, 12:44
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Hallo,

ich habe folgende 3 Tabellen aus denen ich nicht bezahlte Rechnungen ermitteln möchte:

Code:
FibuBuchung (hier sind alle Zahlungen enthalten)
------------
Gegenkonto
Konto
Betrag
...

Vorgang (hier sind alle Rechungen enthalten)
-------
VgNr
Brutto
...

VorgangPos (hier sind alle Positionen der Rechnungen enthalten)
-----------
PosNr
VgNr
Artikel
...

Das mache ich bisher so. Das klappt auch:

SQL-Code:
select
  v.VgNr,
  v.brutto,
  sum(case
    when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
    when konto >= 10000 and konto <= 69999 then -Betrag
    end)
  as Offen
from
  FibuBuchung b
left join
  Vorgang v on b.vgnr = v.vgnr
group by
  v.VgNr,
  v.brutto
order by
  v.VgNr
Ergebnis ist dann z.B.
Code:
VgNr       Brutto   Offen
2018-0038  10.234 -10.234
2018-0078     123     -50
Nun möchte ich zu jedem Vorgang (=Rechnung) die zugehörigen Positionen (=Artikel) in einer weiteren Spalte ausgeben:

Code:
VgNr       Brutto   Offen Positionen
2018-0038  10.234 -10.234 PC, Monitor, Fax
2018-0078     123     -50 Tastatur, Maus
Dazu habe ich den SQL-Ausdruck wie folgt ergänzt:

SQL-Code:
select
  v.VgNr,
  v.brutto,
  sum(case
    when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
    when konto >= 10000 and konto <= 69999 then -Betrag
    end)
  as Offen,
  LIST (VorgangPos.Artikel, ', ') as Positionen <---- NEU
from
  FibuBuchung b
left join
  Vorgang v on b.vgnr = v.vgnr
left join <---- NEU
  VorgangPos on v.VgNr = VorgangPos.VgNr <---- NEU
group by
  v.VgNr,
  v.brutto
order by
  v.VgNr
Das ergibt folgendes Problem:
Zwar sind die Positionen und aufgelsitet, der offene Betrag wird aber so oft aufsummiert, wie es Positionen gibt. Gibt es z.B. 3 Position, ist der offene Betrag 3x so hoch wie er eigentlich sein sollte:

Code:
VgNr       Brutto   Offen Positionen
2018-0038  10.234 -30.702 PC, Monitor, Fax
2018-0078     123    -100 Tastatur, Maus
Wer kann helfen? Vielen Dank im Voraus!

Geändert von BlueStarHH ( 4. Feb 2018 um 15:37 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 4. Feb 2018, 15:33
Durch diese Zeilen
SQL-Code:
left join <---- NEU
  VorgangPos on v.VgNr = VorgangPos.VgNr <---- NEU
bekommst Du im Select pro Vorgang soviele Zeilen, wie es Vorgangspositionen gibt. Dementsprechend wird beim Summieren dann auch der Betrag "zuviel summiert".

Kann es nicht testen, aber eventuell könnte das ein Ansatz sein:
SQL-Code:
select
  v.VgNr,
  v.brutto,
  Offen,
  LIST (VorgangPos.Artikel, ', ') as Positionen
from
(
  select
    v.VgNr,
    v.brutto,
    sum(case
      when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
      when konto >= 10000 and konto <= 69999 then -Betrag
      end)
    as Offen
  from
    FibuBuchung b
  left join
    Vorgang v on b.vgnr = v.vgnr
  group by
    v.VgNr,
    v.brutto
) a,
left join
  VorgangPos on a.VgNr = VorgangPos.VgNr
order by
  a.VgNr

Geändert von Delphi.Narium ( 5. Feb 2018 um 12:11 Uhr) Grund: Syntaxfehler behoben
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 4. Feb 2018, 18:55
Danke, damit klappt es!
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 5. Feb 2018, 07:52
mal eine blöde Frage, was sind das für Bedingungen, bei denen Du den Betrag ausgibst, Vorzeichen änderst?
Und was geschieht, wenn die Bedingungen nicht erfüllt sind?

...
Das klappt auch:

SQL-Code:
select
  v.VgNr,
  v.brutto,
  sum(case
    when gegenkonto >= 10000 and gegenkonto <= 69999 then Betrag
    when konto >= 10000 and konto <= 69999 then -Betrag
    end)
  as Offen
from
  FibuBuchung b
...
...
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 5. Feb 2018, 08:18
Es scheint sich um eine Datevkonforme Buchhaltung zu handeln.
10000-69999: Debitoren, 70000-99999: Kreditoren.

Normalfall Buchung Umsatz an Debitor. Wenn also Debitor in Konto ist, dann handelt es sich um einen Storno, Umkehrung durch S/H oder Betrag ist negativ. Deshalb wird dieser in der OPOS-Aufstellung negiert.
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 5. Feb 2018, 08:23
mkinzler war schneller und liegt richtig.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Offene Posten: Artikel mit LIST anhägen vervielfacht Summe

  Alt 5. Feb 2018, 09:03
Ach, trotz Kaffee total gepennt!
Nicht dass ich Datev konforme Buchhaltung kenne, aber ich habe nicht mal geschnallt, dass es bei den Kriterien um Buchungsschlüssel geht.
Sorry & Danke!
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz