Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.
SOLVED

Increase by one calendar day

Avatar

Level 9

The user enters a Monday date in a date/time object. It is, and needs to be displayed in full (Monday, July 16, 2012) When the user then clicks a check box object, the remaining days of that week are populated into four other date.time objects. I was trying to use the following FormCalc to verify the user selected a "Monday" date and if yes, then add one day for each other field but it does not work.

Here's an example form section -

// Get the number of days since epoch (Jan 1, 1900).

var dateNum = Date2Num(Day1.formattedValue,"M/D/YYYY")

// Convert the number of days to the full weekday name.

MondayCheck.rawValue = Num2Date(dateNum,"EEEE")

if (MondayCheck.rawValue ne "Monday") then

xfa.host.messageBox("First Requested Day Must Be a Monday.");

$.rawValue = "";

endif

DayTwo.Day2.rawValue = Num2Date(Date2num(Day1.rawValue,"YYYY-MM-DD")+1,"EEEE, MMMM D, YYYY");

DayThree.Day3.rawValue = Num2Date(Date2num(Day1.rawValue,"YYYY-MM-DD")+1,"EEEE, MMMM D, YYYY");

DayFour.Day4.rawValue = Num2Date(Date2num(Day1.rawValue,"YYYY-MM-DD")+1,"EEEE, MMMM D, YYYY");

DayFive.Day5.rawValue = Num2Date(Date2num(Day1.rawValue,"YYYY-MM-DD")+1,"EEEE, MMMM D, YYYY");

1 Accepted Solution

Avatar

Correct answer by
Level 10

Yup, it's FormCalc - you can't use Date2Num, etc., in JavaScript.

It will work with date fields but I found the text fields easier to deal with.

View solution in original post

9 Replies

Avatar

Level 10

I've done something similar but found it easier to use more variables:

var endDate = Date2Num($,"YYYY-MM-DD")

var dayOfWeek = Num2Date(endDate, "E")

 

if (dayOfWeek <> 7) then

          xfa.host.messageBox("Ending date must be a Saturday")

          $ = null

          xfa.host.setFocus("$")

endif

and then I populate the other fields with this (I don't use date fields for the calculated dates, just text fields):

Pg1.subTableAux.Table1.Row1[6].Date = Num2Date(endDate - 0, "DD")

Pg1.subTableAux.Table1.Row1[5].Date = Num2Date(endDate - 1, "DD")

Pg1.subTableAux.Table1.Row1[4].Date = Num2Date(endDate - 2, "DD")

etc...

Avatar

Level 9

I assume this is in FormCalc. Do you know if this will work using date/time fields instead of textfields?

Thanks for your help,

-Don

Avatar

Correct answer by
Level 10

Yup, it's FormCalc - you can't use Date2Num, etc., in JavaScript.

It will work with date fields but I found the text fields easier to deal with.

Avatar

Level 9

Thanks for your help!

I'll give it a try.

-Don

Avatar

Level 9

If I don't want this script to run unless a checkbox is checked first, how can I write a FormCalc statement for that>

Thanks again!

Avatar

Level 10

You'd need to wrap the whole thing in another if statement to check the value of the checkbox.

Or you could have the checkbox enable/disable the object that is doing the calculation.

Avatar

Level 9

That's the part I am not familiar with. I know javascript if statements but not FormCalc.

Is it like this:

if (checkbox1 = 1) then

etc...

Avatar

Level 10

Yup it works the same but the FormCalc operators seem to work better (eq instead of =, <> instead of !=, etc.).

if (condition) then

     if (condition) then

          do stuff

     endif

endif

Here's a link to the FormCalc user reference:

http://help.adobe.com/en_US/livecycle/9.0/FormCalc.pdf

Avatar

Level 9

Got it - thanks for your time and expertise.

-Don