CALCSUMS(Gelöst!)

15. Januar 2009 22:40

..ist eigentlich ein wirklich toller Befehl( berechnet Spaltensumme eines vorher abgrenzten Feldes)
aber NAV meckert weil angeblich Schlüssel falsch gesetzt sind, Beispiel.


Projektposten.SETCURRENTKEY("Entry No.", "Job No.", "Posting Date","Type");
Projektposten.SETRANGE(Projektposten."Job No.", "Job No."= Nummer) // Nummer ist eine Variable deren Wert ich in einen Textfeld eingebe vom Typ Text
Projektposten.CALCSUMS("Total Cost"); // Total Cost habe ich bei dem Key, den ich oben verwende als SumIndex Field angegeben ( im Table Projektposten). Muss ich den auch angeben?

Es kommt hierbei zu einer Fehlermeldung : Die Variable nach der sie abgrenzen ist nicht im definierten Schlüssel.
Mach schon drei Tage an dieser Programmierung rum, Chef will Ergebnis, Supportfirma teuer, im Informatikstudium lernt man das sowie so nicht ,
Wer helfen kann ist ein Schatz!

Wie komme ich dann an den Wert der Summe( möchte den Wert als Decimal in einer Variable). Kann man eine Spaltesumme auch anders implemtieren (rekursiv????)?
Zuletzt geändert von NAVGATOR am 16. Januar 2009 18:10, insgesamt 1-mal geändert.

Re: CALCSUMS

16. Januar 2009 00:44

Um "Job No." auf die Nummernvariable zu filtern :
Code:
Projektposten.SETRANGE("Job No.", Nummer)


Aus ("Job No."= Nummer) wird ein boolscher Rückgabewert, TRUE wenn beide Werte übereinstimmen, FALSE wenn nicht. Solche Ausdrücke werden viel als Abbruchbedingungen in Schleifen verwendet, zum Filtern eher selten, und wenn , dann eben nur auf Boolean-Felder.

Re: CALCSUMS

16. Januar 2009 07:44

nur als Nebeninfo:

ich glaube was du versucht hast war
Code:
Projektposten.SETFILTER(Projektposten."Job No.", '=%1',  Nummer)

das wuerde dem was du geschrieben hast am ehsten nah kommen wobei das genau das selbe ist, wie das was Kowa gesagt hat!

so koennte man z.B. auch
Code:
Projektposten.SETFILTER(Projektposten."Job No.", '<>%1',  Nummer)

machen, wenn man wollte :)


Gruß Matthias

Re: CALCSUMS

16. Januar 2009 09:22

NAVGATOR hat geschrieben:Wie komme ich dann an den Wert der Summe( möchte den Wert als Decimal in einer Variable). Kann man eine Spaltesumme auch anders implemtieren (rekursiv????)?


An die Summe kommst du nach dem Calcsums ganz einfach: Summe:=Projektposten("Total Cost").

Eine Reihe von Werten aufzusummieren ist nicht wirklich für eine rekursive Berechnung prädestieniert, denke ich.

Re: CALCSUMS

16. Januar 2009 10:45

Code:
 IF Nummer <>'' THEN BEGIN
SETCURRENTKEY("Job No.");
 SETRANGE("Job No.", Nummer);
    ProPosten.CALCSUMS("Total Cost");
      Ges:=ProPosten."Total Cost";
          END;




Danke für die Tipps!
So habe ich es momentan geschrieben
es funkioniert schon fast. Leider werden aber nicht die Summe der Projekte mit "Nummer" berechnet
( habe an einen Beispiel die Summe in Excel berechnet.)
Es kommt zu einen viel zu hohen Wert für Ges

An die Summe kommst du nach dem Calcsums ganz einfach: Summe:=Projektposten("Total Cost").







funktioniert so nicht. Projektposten ( oder ProPosten sind Recordvariablen, keine Funktionen!)

Re: CALCSUMS

16. Januar 2009 12:19

McClane hat geschrieben:funktioniert so nicht. Projektposten ( oder ProPosten sind Recordvariablen, keine Funktionen!)

Schande über mich. Ohne Klammern war gemeint.

Re: CALCSUMS

16. Januar 2009 14:23

Es kommt weiterhin zu Fehlermeldungen. Was könnte falsch sein?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: CALCSUMS

16. Januar 2009 15:14

jetzt gehts !

Code:
 
IF Nummer <>'' THEN BEGIN
 SETCURRENTKEY("Job No.");
    SETRANGE("Job No.", Nummer);
    CALCSUMS("Total Cost");
           Ges:= "Total Cost";
     
       END;


so werden die richtigen Summen gebildet. Vielen dank allerseits für die Tipps!