Need to show only the Deliverables that will be issue in the next 7 Days.
Need to show only the Deliverables that will be issue in the next 7 Days, from the DataDate.
I need the script that give me information, the information must be taken from the dates FechaP1 to Fecha P5.
All information is on Documetos table. The Documenst table maybe have a lot of Deliverables.
Thanks
19 replies
-
Rafael said:
Need to show only the Deliverables that will be issue in the next 7 Days, from the DataDate.Help me understand what you want a bit better. So you want to create a formula that checks each Fecha field and if FechaP1 has a date that is within 7 days of the date in DataDate, return a value that you can sort on? Then checks if FechaP2 and so on?
You want to be able to filter a table view or use it to create a view element in a dashboard?
-
The first point Yes.
The second point I will like to view in a table view.
I need these information for report every week.
Thank Fred.
-
Try creating five new formula fields (one for each Fecha) and put this in the formula:
days(FechaPx,DataDate)
You will see numbers from positive (days before the DataDate) to negative (days after the DataDate). Do you want to see records where the days are between 0 and 7?
-
Here is something quick off the top of my head:
let dcheck1 := workdays(Date1, DataDate); let dcheck2 := workdays(Date2, DataDate); let dcheck3 := workdays(Date3, DataDate); let dcheck4 := workdays(Date4, DataDate); let dcheck5 := workdays(Date5, DataDate); let SevenOrLess1 := if dcheck1 > 0 and dcheck1 < 8 then 1 end; let SevenOrLess2 := if dcheck2 > 0 and dcheck2 < 8 then 2 end; let SevenOrLess3 := if dcheck3 > 0 and dcheck3 < 8 then 3 end; let SevenOrLess4 := if dcheck4 > 0 and dcheck4 < 8 then 4 end; let SevenOrLess5 := if dcheck5 > 0 and dcheck5 < 8 then 5 end; let array1 := [SevenOrLess1, SevenOrLess2, SevenOrLess3, SevenOrLess4, SevenOrLess5]; if count(array1) > 0 then 1 end
Then you can filter for 1 and it will show only records that has a DataDate that is 7 working days from any of the Fecha dates.
I created an array just in case you want to find out which Fecha field has the date that is close to the DataDate.
-
Fred Hi Fred
After researching on the forum I found a script that I have adapted a bit but I have two problems.
The first is that this script is up to today's date and I need to adapt it to the DataDate date.
The second is that it is with a single date FechaPx.
I really don't know if it's possible to set it aside for my needs
let rangeDat := for i in range(0, 7) do format(date(year(today()), month(today()), day(today()) + i), "DD.MM.YY") end; let result := [""]; for i in rangeDat do for j in (select DOCUMENTOS) order by 'FechaP5 (Editar)' do if i = format(j.'FechaP5 (Editar)', "DD.MM.YY") then result := array(result, [j.Documento + if format(j.'FechaP5 (Editar)', "DD.MM.YY") = format(today(), "DD.MM.YY") then " - " else " Date to be issued : / " + format(j.'FechaP5 (Editar)', "DD.MM.YY") end]) end end end; join(result[!= ""], " ")
-
So it looks like you are trying to use a view element in another table.
If you create the formula field and put my code, then you can just search on my field for the view formula:
select Documentos [newfield = 1]
And this will show you all records that have FechaPx that is 7 days before the DataDate.
The code does not include records that have Fecha dates that are equal to the DataDate. If you want to include those then change > 0 to >= 0 in the formula field.
-
Rafael said:
create new table Next7days
Where copy your Formula ? and where the select Documentos [newfield = 1]
I'lost now, sorryI guess I made too many assumptions. What are you trying to do in the Next7days table? Please be specific with field names and and any formulas.
-
Do you need the data from Documentos to be a text field in your Next7days table?
Can you add a view element in Next7days and use that?
-
Rafael said:
For both Question is YESWell you made me think about a solution for the formula field part. I've attached a DB with my changes. It is, of course, very rough so you will have to make it pretty like the rest of your DB.
Some main points:
In the Documentos table
1) I modified the Next formula as I discovered that workdays() always returns a positive number regardless if Datadate is before or after the Fecha date. So I had to check for that and make any results where the Fecha date is after the Datadate to show up as negative.
2) I added a field called fechafields that takes the first part of the Next field and stores the array to be used later.
In the Next7days table:
here is the code for the formula field to show the results as text:
let selDocs := (select DOCUMENTOS)[Next = 1]; let predisplay := for loop1 in selDocs do let xFecha := max(loop1.fechafields); switch xFecha do case 1: loop1.Documento + " - " + loop1.FechaP1 + " " case 2: loop1.Documento + " - " + loop1.FechaP2 + " " case 3: loop1.Documento + " - " + loop1.FechaP3 + " " case 4: loop1.Documento + " - " + loop1.FechaP4 + " " case 5: loop1.Documento + " - " + loop1.FechaP5 + " " end end; let display := replace(text(predisplay), ",", ""); display
In line 3, I can use the max function since fechafields is an array. This is just in case there are two or more fecha dates that are within 7 days and I just decided on the last one. If that doesn't fit your scenario then you can use first.
Line 22 is needed because a comma separated list is created in redisplay so I used the replace command to replace the "," with a blank space "". As you can see I have a carriage return in the case statements.
-
The max function seemed limiting to me so I added a loop to allow for multiple Fecha dates to be valid and will show the dates for each valid date.
let selDocs := (select DOCUMENTOS)[Next = 1]; let predisplay := for loop1 in selDocs do for loop2 in loop1.fechafields do switch loop2 do case 1: loop1.Documento + " - " + loop1.FechaP1 + " " case 2: loop1.Documento + " - " + loop1.FechaP2 + " " case 3: loop1.Documento + " - " + loop1.FechaP3 + " " case 4: loop1.Documento + " - " + loop1.FechaP4 + " " case 5: loop1.Documento + " - " + loop1.FechaP5 + " " end end end; let display := replace(text(predisplay), ",", ""); display
There is a new line 3 which will now loop through the fechafields field from Documentos and create a line for each Fecha date that is within 7 days of your DataDate.
It seems like your dates are always more than 7 days apart, but now if they aren't you will know all dates.
-
Rafael said:
Example the Document D00 have the following FechaP1 to FechaP5 The DataDate is 02/12/2022
7/11/2022 11/11/2022 18/11/2022. 25/11/2022. 07/12/2022
For the FechaP5 the result should be 2 days no -4I'm using the workdays() function and I'm making anything with a Fecha date that is greater than the DataDate a negative, so since 02/12/2022 is a friday, 05/12/2022 is -2 days. So 07/12/2022 is -4 days. workdays() counts the same day as 1 there is no 0. Which I guess makes some sense as that is a workday.
Content aside
- Status Answered
- 1 yr agoLast active
- 19Replies
- 193Views
-
2
Following