Autor Thema: Fehler in manueller laufender Summenformel  (Gelesen 259 mal)

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Fehler in manueller laufender Summenformel
« am: 18. Juli 2018, 10:32 »
Hallo zusammen,

ich habe mir eine manuelle Summenformel gebaut:

- Initiierungsvariable im Header
- Auswertung im Gruppenkopf 1

Dargestellt werden soll das Ergebnis im Berichtsfuß.
Ich habe 4 solcher Summenformeln, 3 laufen richtig, die eine nicht.

Wenn der Bericht komplett durchgelaufen ist steht an dem Ort der Auswertung im Gruppenkopf 1 eine "20" (wird aber wieder ausgeblendet, nur zur Überprüfung), im Berichtsfuß hingegen eine "21"  ???

Krug Andreas

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #1 am: 18. Juli 2018, 15:38 »
Hallo B3n,
ich hatte auch mal so einen Fehler. Dabei verwendete ich Shared Variablen und Unterberichte.
Wenn der Unterbericht sich auf Seite x nicht ausging und deshalb auf Seite x+1 gedruckt wurde, dann wurde die Variable zweimal ausgewertet.

Wenn ich mich recht erinnere hat damals geholfen den Hacken "Objekt zusammenhalten" rauszunehmen (oder zu setzten).

Könnte es sein, dass es eine ähnliche Konstellation ist?

Liebe Grüße, Andreas

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #2 am: 18. Juli 2018, 19:09 »
Hi Andreas,

vielen Dank für den Tipp, aber leider brachte das gar nichts.
Habe "Objekt zusammenhalten" einmal rausgenommen, und einmal gesetzt.

Das interessiert die Summenformel leider gar nicht.

Die 3 anderen Felder die ich verwende sind genauso aufgebaut und funktionieren tadellos ...  ???

plinni

  • Experte
  • *****
  • Beiträge: 155
Re: Fehler in manueller laufender Summenformel
« Antwort #3 am: 19. Juli 2018, 07:18 »
Kommt denn der Gruppenkopf 1 evtl. noch einmal, ist aber unterdrückt?

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #4 am: 19. Juli 2018, 08:26 »
HI plinni,

Leider auch nein.

Habe jetzt sogar mittels Formel versuch as abzufangen.

counterVar:= counterVar;

IF OnLastRecord THEN
counterVar:= counterVar -1

Und dann zieht er doch tatsächlich 2!! Zähler ab und nicht einen. ;D

plinni

  • Experte
  • *****
  • Beiträge: 155
Re: Fehler in manueller laufender Summenformel
« Antwort #5 am: 20. Juli 2018, 07:07 »
Kannst du den Bericht mal samt Daten hier anhängen? Oder schieb die Formeln zunächst mal in den Details und schau, was damit passiert.

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #6 am: 20. Juli 2018, 11:45 »
Hi plinni,

wenn ich die Formel in den Detailbereich schiebe, habe ich den selben Effekt: counter weicht im Berichtsfuß um + 1 ab.

plinni

  • Experte
  • *****
  • Beiträge: 155
Re: Fehler in manueller laufender Summenformel
« Antwort #7 am: 20. Juli 2018, 16:49 »
Ist in den Gruppenoptionen evtl. "Gruppenkopf auf jeder neuen Seite wiederholen" angehakt?

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #8 am: 20. Juli 2018, 22:26 »
Hi,

nein das ist nicht aktiviert.

Das ist langsam echt zum Haare raufen  ;D

B3n

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #9 am: 24. Juli 2018, 12:33 »
Habe den Bericht jetzt nochmal aufs äußerste runterreduziert und eine seltsame Entdeckung gemacht:

- ich werte im Prinzip die Häufigkeit eines Status "U" mit dieser Formel aus.

Ist der Status "P", oder "I" funktioniert dieselbe Formel wie sie soll.

Werte ich "U" aus, ist sie am Ende um +1 zu hoch.

WhilePrintingRecords;

global numberVar Status;

IF {TABELLE.STATUS} = "U"
THEN Status:= Status+ 1
ELSE
Status:= Status;


Das Formelfeld sitzt in den Details und das zu prüfende Feld {TABELLE.STATUS} ebenalls.

Am Ende sitzt das Formelfeld nochmal im Berichtsfuß.

Das kann ma auch jede Datenbank anwenden, zur Nachvollziehbarkeit.

Krug Andreas

  • Sr. Member
  • ****
  • Beiträge: 118
Re: Fehler in manueller laufender Summenformel
« Antwort #10 am: 24. Juli 2018, 15:28 »
Hallo B3n,
warum machst du nicht ein normales Formelfeld.
IF {TABELLE.STATUS} = "U"
1
ELSE
0;

Dann kannst du am Ende die Summe ausrechnen, oder wenn du es laufend brauchst einen laufende Summe.

Wenn du eine Variable verwendest, wird diese für jedes Mal in der Sie im Bericht vorkommt auch ausgewertet.
In deinem Fall für jedes Detail 1x, aber im Berichtsfuß dann noch einmmal.
Wenn also dein letzter Datensatz ein "U" ist, dann ist die Anzahl um eins zu hoch.