20. September 2011 16:36
Guten Abend,
ich hab ein kleines Problem und zwar möchte ich mit einem vorgegeben Datum (befindet sich in einem Tabellenfeld) eine Garantie um 2+ Jahre auf das in dem Feld befindliche Datum berechnen und in ein seperates Feld ausgeben. Wie kann man die Berechnung angehen? Ich ging davon aus das CALCDATE('<+2J>',"Warranty Start Date") vielleicht ginge...
gruß
Ryan
Zuletzt geändert von Ryan am 22. September 2011 09:11, insgesamt 2-mal geändert.
20. September 2011 16:51
Hallo,
Vielleicht hilft dir das weiter:
http://www.navision24.de/befehle/calcdate.html- Code:
NewDate = Calcdate('+2J',ExistingDate);
Gruß
Aydin
20. September 2011 16:57
Ryan hat geschrieben:Ich ging davon aus das CALCDATE('<+2J>',"Warranty Start Date") vielleicht ginge...
Nimm die "<" und ">" weg und es sollte das so tun. Du musst natürlich dafür sorgen, dass dein neues Feld an der richtigen Stelle mit dem berechneten Wert gefüllt wird.
20. September 2011 17:02
Hi,
leider funktioniert das ohne die Klammern auch nicht... bin schon fast der Überzeugung das ich irgendwie eine Formatumwandlung vollziehen muss um mit dem Feldinhalt rechnen zu können. :/
20. September 2011 17:20
Niemals ohne Klammern, dafür mit englischem Inhalt = Dieser Code wird in jeder Clientsprache richtig interpretiert:
- Code:
NewDate := CALCDATE('<+2Y>',ExistingDate);
Und wenn "etwas nicht geht", beschreib bitte die Fehlermeldung o.ä.
20. September 2011 17:21
Ok habs gelöst... hatte mich nur an einer Stelle verschrieben -.-
Danke für die Hilfe
22. September 2011 09:16
Hab jetzt ein neues Problem... meine Grantieberechnung funktioniert leider nur teilweise... :(
Bei mir werden die Debitoren nach "Person" oder "Unternehmen" gefilter... Eine "Person" soll standardmäßig 2 Jahre Garantie erhalten... und wenn das Feld "2+3 Warranty" TRUE ist sind es 5 Jahre... Bei dem Unternehmen immer 1 Jahr... Leider bucht das System für eine "Person" immer wieder nur 1 Jahr. Normalerweise müsste er aber 2 Jahre nehmen. Hab ein Testfeld wo das auch stimmt, bloß für den Serviceartikel wird immer wieder nur 1 Jahre genommen... Ich seh gerade auch nicht mehr durch... Hab ich in meinem Beispiel ein Denkfehler?
- Code:
Beispiel:
IF CustomerRec.GET("Bill-to Customer No.") THEN BEGIN
CASE CustomerRec."Customer Type" OF
CustomerRec."Customer Type"::Person: BEGIN
WarrantyDateEnd := CALCDATE('+2J',"Warranty Start Date");
"Warranty End Date" := WarrantyDateEnd;
END;
CustomerRec."Customer Type"::Company : BEGIN
WarrantyDateEnd := CALCDATE('+1J', "Warranty Start Date");
"Warranty End Date" := WarrantyDateEnd;
END;
END;
IF "2+3 Warrenty" = TRUE THEN
CASE CustomerRec."Customer Type" OF
CustomerRec."Customer Type"::Person: BEGIN
WarrantyDateEnd := CALCDATE('+5J',"Warranty Start Date");
"Warranty End Date" := WarrantyDateEnd;
END;
CustomerRec."Customer Type"::Company : BEGIN
WarrantyDateEnd := CALCDATE('+1J', "Warranty Start Date");
"Warranty End Date" := WarrantyDateEnd;
END;
END;
END;
PS: Alle Garantiefälle funktionieren, halt nur der für 2 Jahre nicht...
Gruß
22. September 2011 09:21
Hast du schon gedebuggt, ob der Code für die Person überhaupt durchlaufen wird (und wenn nein, wo er aussteigt)?
22. September 2011 09:47
Wenn ich das direkt in der Tabelle teste funktioniert es einwandfrei... Buche bzw. liefere ich den Artikel im RTC, macht er mir da für eine Person nur 1 Jahr und ich werde da nicht ganz schlau drauß :/ Hab im RTC auch ein Testfeld in einer Page drin, da wird das Datum richtig berechnet nur haut der mir beim liefern des Serviceartikel ein Jahr raus... alle anderen Bedingungen funktionieren sonst einwandfrei... selbst das mit dem "2+3 Garantie"
22. September 2011 09:58
Kann es sein, dass der Wert nach deinem Quelltext irgendwo überklatscht wird?
22. September 2011 09:59
Hallo Ryan,
wo wird denn der Code ausgeführt? In der Page oder in der `Tabelle?
Veiellciht fehlt ihm ein "Modify", damit der Wert in die Tabelle gelangt.
Funktioniert es im Classic?
Ansonsten müsstest du schon Debuggen.
Gruß
Aydin
22. September 2011 10:03
Danach such ich gerade, ob da irgendwas überschrieben wird.
Der Code wird direkt in der Tabelle ausgeführt. Ich versuchs mal mit einem Modify. Mal schauen obs hilft :/
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.