CALCDATE - Backward Calculation
ChessExpert
Member Posts: 103
Hi there experts. I am writing a code to calculate a date that will go backward instead of forward.
For example:
NewDate := CALCDATE( MyTable.DateFormulaField, WORKDATE() );
My ‘MyTable.DateFormulaField’ contains a value of ‘6D’ for six days.
I want them to put a positive number on that field so that it would be easier for them.
If my WORKDATE() is 2010-11-26, how will I be able to calculate six days before that?
Expected NewDate is ‘2010-11-20’.
Thank you.
For example:
NewDate := CALCDATE( MyTable.DateFormulaField, WORKDATE() );
My ‘MyTable.DateFormulaField’ contains a value of ‘6D’ for six days.
I want them to put a positive number on that field so that it would be easier for them.
If my WORKDATE() is 2010-11-26, how will I be able to calculate six days before that?
Expected NewDate is ‘2010-11-20’.
Thank you.
0
Answers
-
I was able to make a workaround for this:
TempFutureDate := CALCDATE( MyTable.DateFormula, WORKDATE());
TempDaysDifference := TempFutureDate - WORKDATE();
NewDate := WORKDATE() - TempDaysDifference ;
This works.0 -
A better solution would be to train them properly how CALCDATE works in Navision and have them enter -6D. Otherwise one day someone is going to enter a more complex formula in there and it will all apart.David Singleton0
-
i just found some standard code that exactly do what you want...
it's in report 120, calcdates() functionEVALUATE(PeriodLength2,'-' + FORMAT(PeriodLength));
where periodlenght2 and periodlenght are 2 dateformula variables0 -
ChessExpert wrote:I was able to make a workaround...David Singleton wrote:A better solution would be to train them properly how CALCDATE works in Navision and have them enter -6D. Otherwise one day someone is going to enter a more complex formula in there and it will all apart.
Technically (from C/AL point of view) the code will never fail, as long as date formula entered is correct. Solution is OK as long as you want to allow only 'shifting' dates by some constant periods..
But in general David is right - it is better to put some more effort in training (or write a good tooltip instead of code). Test this with CM value as date formula - it will work but results are going to be funny.Slawek Guzek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-030 -
Slawek Guzek wrote:
Technically (from C/AL point of view) the code will never fail, as long as date formula entered is correct.
I guess we have a different definition of fail.
take just about any formula and you will see that the '-' will almost never work.
CD+WD7-2D
7D+1M
CM
it will fail every time.David Singleton0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.7K Microsoft Dynamics NAV
- 18.8K 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
- 328 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

