datumberekening in een report

Adriaan2k
Member Posts: 159
ik heb een vraagje mbt een datumberekening op een report. Ik wil hierin een veld hebben dat aangeeft dat de klant bijv. in 2 of 3 termijnen mag betalen na resp. 1 maand na fakt.datum en 2 mnd na de faktuur boekingsdatum. Simpel een global aanmaken met als datatype 'date' en dan date1:="sales invoice header"."posting date"+30D werkt niet.
Wie kan mij helpen. Dit moet m.i. eigenlijk heel simpel zijn maar mijn
kennis in c/side is te mager. Alvast bedankt voor jullie reacties.
Wie kan mij helpen. Dit moet m.i. eigenlijk heel simpel zijn maar mijn
kennis in c/side is te mager. Alvast bedankt voor jullie reacties.
mvg Adriaan
0
Comments
-
2 mogelijkheden:
date1 := "sales invoice header"."posting date" + 30;
OFdate1 := CALCDATE("sales invoice header"."posting date",'<30D>');
Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
kriki wrote:2 mogelijkheden:
date1 := "sales invoice header"."posting date" + 30;
OFdate1 := CALCDATE("sales invoice header"."posting date",'<30D>');
ok, ik ga dat morgen meteen proberen, ik was een eind op weg en had de 2e optie zelf al, echter zonder resultaat waarschijnlijk vanwege verkeerde quotes. Alvast bedankt !
Beide horen zeker thuis in de on-after-get-record van het data-item ?mvg Adriaan0 -
Adriaan2k wrote:Beide horen zeker thuis in de on-after-get-record van het data-item ?
De OnPreSection- en OnPostSection- triggers zouden ENKEL mogen gebruikt worden om te beslissen of iets moet geprint worden of niet (OnPreSection) en om iets te doen juist na het printen van een section (OnPostSection).
Andere dingen moeten in de OnAfterGetRecord-triggers.Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
ik heb beide oplossingen geprobeerd maar alleen de eerste werkt (en bedankt daarvoor). De 2e mogelijkheid is wel mooier omdat je daar ipv 30D ook 1M zou kunnen ingeven. Ik krijg echter de foutmelding:
"typeconversie is niet mogelijk omdat een van de zijden van een niet toegestaan type is........Date:= Text "
misschien dat je nog even een tip hebt ?mvg Adriaan0 -
Oops :oops:
vergissing! het moet zijn:date1 := CALCDATE('<30D>',"sales invoice header"."posting date");
Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
hehe...inderdaad. maar het werkt dus bedankt voor de hulp. Nu moet ik alleen nog een manier vinden om deze 2 datumberekeningen in een tekstveld op te nemen.mvg Adriaan0
-
Waldo wrote:Als ik me niet vergis, kan je gewoon die "CALCDATE('<30D>',"sales invoice header"."posting date")" in de SourceExpr steken... :-kmvg Adriaan0
-
Waldo wrote:Hoe bedoel je, als echte tekst?
Wat plaats je in SourceExpr?
Dit al eens geprobeerd:
FORMAT(CALCDATE('<30D>',"sales invoice header"."posting date"))je bent nog laat bezig
Ik zit met het volgende:
date1 :=CALCDATE('<1M>', "Sales Invoice Header"."Posting Date");
date2 :=CALCDATE('<2M>', "Sales Invoice Header"."Posting Date");
BEGIN
IF Cust."Customer Price Group"='PART 2' THEN
termtext:= 'U mag het bedrag ook overmaken in 2 maandelijkse termijnen van € te voldoen per heden en per' ELSE
termtext:='';
IF Cust."Customer Price Group"='PART 3' THEN
termtext1:= 'U mag het bedrag ook overmaken in 3 maandelijkse termijnen van € te voldoen per heden, per en per' ELSE
termtext1:='';
END;
op de lege plaatsen wil ik dus de berekende datums vullen maar als ik daar de formule zet, wordt dit als letterlijke tekst meegenomen. Misschien dat ik een hele andere richting op moet denken ?mvg Adriaan0 -
de lege plaatsen in mijn vorige post zijn dus weggevallen...... ](*,)mvg Adriaan0
-
Dit is een long shot:
al eens met STRSUBSTNO gewerkt?
dan kan u %1 e.d. vervangen door een datum.
In uw voorbeeld zou dit het volgende kunnen zijn:date1 :=CALCDATE('<1M>', "Sales Invoice Header"."Posting Date"); date2 :=CALCDATE('<2M>', "Sales Invoice Header"."Posting Date"); IF Cust."Customer Price Group"='PART 2' THEN termtext:= STRSUBSTNO('U mag het bedrag ook overmaken in 2 maandelijkse termijnen van € te voldoen per heden en per %1', date1); ELSE termtext:=''; IF Cust."Customer Price Group"='PART 3' THEN termtext1:= STRSUBSTNO('U mag het bedrag ook overmaken in 3 maandelijkse termijnen van € te voldoen per heden, per %1 en per %2', date1, date2); ELSE termtext1:='';
Ik raad ook aan om de tekst in een tekstconstante te plaatsen ... zodat je multilanguage kunt werken.0 -
ik heb nog nooit met een substr gewerkt en begrijp ook de %1 niet, maar ik ga dit morgen proberen. Voor vandaag is het genoeg geweest. Ik plaats morgen weer een post met het resultaat. In ieder geval erg bedankt tot dusver. mvgr. Adriaanmvg Adriaan0
-
No problem
Staat trouwens mooi uitgelegd in de C/SIDE help:STRSUBSTNO (String)
Use this function to replace %1, %2, %3... and #1, #2, #3... fields in a string with the values you provide as optional parameters.
NewString := STRSUBSTNO(String [,Value1, ...])
NewString
Data type: text constant or code
The result after the system substitutes the corresponding values in the '#' and '%' fields.
String
Data type: text constant or code
A string containing '#' and/or '%' fields. The % fields are replaced by the values with their full lengths, while # fields are replaced by the values truncated to the length of the # field.
Value1,...
Data type: any
One or more values (expressions) you want to insert into String. You can specify up to 10 values.
Example
This example shows how to use the STRSUBSTNO function.
Str := Text000;
AccountNo := 3452;
MESSAGE(Text001, Str);
Str := STRSUBSTNO(Str, AccountNo, 2345 + 5462);
MESSAGE(Text002, Str);
Veel succes!0 -
Het werkt perfect !
kunnen jullie me nu nog met één ding helpen mbt deze post. Ik heb in het report, in de onaftergetrecord van het data-item "Sales invoice line" onderstaande gezet (tezamen met de vorige tips). Ook staat in de Onpredataitem het commande createtotals met daarin o.a. tot2,tot3,tot2r en tot3r. Ondanks de plaatsing van de velden in de footer krijg ik toch geen totalen maar alleen de berekende velden van de laatste 'sales invoice line' regel. Hoe kan ik het totaal krijgen ?
tot2:="Sales Invoice Line"."Amount Including VAT"/2;
tot3:="Sales Invoice Line"."Amount Including VAT"/3;
tot2r:=round(tot2,0.01);
tot3r:=round(tot3,0.01);mvg Adriaan0 -
Heb je in de properties van het dataitem bij Totalfields aangegeven welke velden getotaliseerd moeten worden?0
-
Maximus wrote:Heb je in de properties van het dataitem bij Totalfields aangegeven welke velden getotaliseerd moeten worden?
de aangemaakte velden tot2, tot3 en tot2r en tot3r staan al in het commande CREATETOTALS. Deze velden staan niet in de veldenlijst die ik kan selecteren voor de propertie 'Totalfiels'. :-kmvg Adriaan0 -
Natuurlijk, ik zat te slapen. Waarom zet je niet op de OnAfterGetRecord:
tot2:= tot2 + "Sales Invoice Line"."Amount Including VAT"/2;
tot3:= tot3 + "Sales Invoice Line"."Amount Including VAT"/3;0 -
Maximus wrote:Natuurlijk, ik zat te slapen. Waarom zet je niet op de OnAfterGetRecord:
tot2:= tot2 + "Sales Invoice Line"."Amount Including VAT"/2;
tot3:= tot3 + "Sales Invoice Line"."Amount Including VAT"/3;
Ha Maximus, het lukt me toch niet. Als ik 2 velden aanmaak met als sourcecode resp. tot2r en tot3r , dan werken die velden wel in de footer section. Maar als ik ze opneem in de onaftergetrecord van de salesline, dan komt er toch een vreemd bedrag in de substr te staan. Nog ideeën ?mvg Adriaan0 -
Zijn het Globals of Locals?0
-
het zijn globals, ik heb 4 globals aangemaakt, zie onderstaand:
Name DataType Subtype Length
tot2 Decimal
tot3 Decimal
tot2r Decimal
tot3r Decimal
en deze gebruik ik op de volgende manier in de onaftergetrecord van dataitem 'sales invoice line':
date1 :=CALCDATE('<1M>', "Sales Invoice Header"."Posting Date");
date2 :=CALCDATE('<2M>', "Sales Invoice Header"."Posting Date");
tot2:="Sales Invoice Line"."Amount Including VAT"/2;
tot3:="Sales Invoice Line"."Amount Including VAT"/3;
tot2r:=ROUND(tot2,0.01);
tot3r:=ROUND(tot3,0.01);
IF Cust."Customer Price Group"='PART 2' THEN
term2:= STRSUBSTNO('U mag het bedrag ook overmaken in 2 maandelijkse termijnen van € %2 te voldoen per heden en per %1.',
date1,tot2r) ELSE
term2:='';
IF Cust."Customer Price Group"='PART 3' THEN
term3:= STRSUBSTNO('U mag het bedrag ook overmaken in 3 maandelijkse termijnen van € %3 te voldoen per heden, per %1 en per %2.',
date1,date2,tot3r) ELSE
term3:='';
De term-teksten komen in de 'sales invoice line'-footer in het report.
Kun je hier wat mee ?mvg Adriaan0 -
Je moet sowieso dit op de OnAfterGetRecord zetten:
tot2:= tot2 + "Sales Invoice Line"."Amount Including VAT"/2;
tot3:= tot3 + "Sales Invoice Line"."Amount Including VAT"/3;
dit zorgt ervoor dat bij iedere verkoopfactuurregel die voorbijkomt de waarde van Bedrag incl BTW bij tot2 opgeteld wordt. Als alle regels voorbij zijn gekomen en de footersessie komt aan de beurt bevat deze variabele een totaal die je kan laten afdrukken in een textbox met sourceexpression tot2 en tot3.0 -
Ha Maximus,
alles werkt. Bedankt voor de hulp en de tips !mvg Adriaan0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions