Calcolare il numero di Lunedi
Moderatore: Moderatori
-
- Messaggi: 3
- Iscritto il: giovedì 21 novembre 2013, 9:19
Calcolare il numero di Lunedi
Salve a tutti
qualcuno sa aiutarmi??'
Dovrei calcolare il numero di lunedì che ci sono fra due date... come faccio??
qualcuno sa aiutarmi??'
Dovrei calcolare il numero di lunedì che ci sono fra due date... come faccio??
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
Re: Calcolare il numero di Lunedi
Questa funzione crea una lista di tutti i lunedì fra due date, compresi eventuali lunedì delle due date.
( cioè tra il 04/11/2013 e il 25/11/2013 restituisce una lista di 4 lunedì )
Per poi calcolarne il numero ti basterà: ValueCount ( Mondays ( StartDate ; EndDate ) )
( cioè tra il 04/11/2013 e il 25/11/2013 restituisce una lista di 4 lunedì )
Per poi calcolarne il numero ti basterà: ValueCount ( Mondays ( StartDate ; EndDate ) )
Codice: Seleziona tutto
/*
Mondays ( StartDate ; EndDate ) Custom Function
*/
Case(
StartDate and EndDate and StartDate ≤ EndDate ;
List ( If ( DayOfWeek ( StartDate ) = 2 ; StartDate ); Mondays ( StartDate + 1 ; EndDate ) )
)
Raybaudi FMP 12 Adv. Windows XP SP3
-
- Messaggi: 3
- Iscritto il: giovedì 21 novembre 2013, 9:19
Re: Calcolare il numero di Lunedi
grazie
la provo subito
la provo subito
-
- Messaggi: 3
- Iscritto il: giovedì 21 novembre 2013, 9:19
Re: Calcolare il numero di Lunedi
Ho provato e funziona
ma se uso come data finale date successive al 2041 non funziona
ma se uso come data finale date successive al 2041 non funziona
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
Re: Calcolare il numero di Lunedi
Le funzioni ricorsive ( e questa lo è ) hanno un numero di ricorsioni limitato.
Nota che dal 23/11/2013 al 23/11/2040 ci sono la bellezza di 1409 lunedì e FileMaker deve tenere in memoria la bellezza di 15498 caratteri della lista ( questa funzione lo può fare ma solo per 10.000 ricorsioni )
Se hai la necessità di trovare il numero di lunedì fra due date che differiscono per più di 27 anni, puoi provare quest'altra che funziona fino a 136.
Se poi le necessità sono ancora maggiori, si dovrà usare un looping script.
Tieni però presente che, per questo tipo di calcolo, spesso ( e questo è un caso ) si può usare un semplice campo calcolato come questo:
Nota che dal 23/11/2013 al 23/11/2040 ci sono la bellezza di 1409 lunedì e FileMaker deve tenere in memoria la bellezza di 15498 caratteri della lista ( questa funzione lo può fare ma solo per 10.000 ricorsioni )
Se hai la necessità di trovare il numero di lunedì fra due date che differiscono per più di 27 anni, puoi provare quest'altra che funziona fino a 136.
Codice: Seleziona tutto
/*
MondaysNumber ( StartDate ; EndDate ; CountValues ) Custom Function tail recursive
*/
Case(
StartDate and EndDate and StartDate ≤ EndDate ;
MondaysNumber ( StartDate + 1 ; EndDate ; CountValues + ( DayOfWeek ( StartDate ) = 2 ) ) ;
CountValues
)
Tieni però presente che, per questo tipo di calcolo, spesso ( e questo è un caso ) si può usare un semplice campo calcolato come questo:
Codice: Seleziona tutto
Let(
newDate = EndDate - Choose ( DayOfWeek ( EndDate ) - 1 ; 6 ; 0 ; 1 ; 2 ; 3 ; 4 ; 5 ) ;
If ( StartDate and EndDate and EndDate ≥ StartDate ; Div ( newDate - StartDate ; 7 ) + 1 )
)
Raybaudi FMP 12 Adv. Windows XP SP3