GiorniLavorativi ( dataInizio ; dataFine )  Risolto!

E' l'area in cui è possibile condividere funzioni personalizzate nate dalla creatività e l'esperienza degli sviluppatori FileMaker

Moderatore: Moderatori

Bloccato
raybaudi
Messaggi: 3616
Iscritto il: sabato 7 febbraio 2004, 1:00
Località: Roma
Contatta:

GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da raybaudi » venerdì 9 febbraio 2007, 20:11

Questa funzione personalizzata può servire a chi voglia contare i giorni lavorativi tra una data ed un'altra, escludendo i sabati e le domeniche.

/*
GiorniLavorativi ( dataInizio ; dataFine )

parametri:
dataInizio = data inizio lavoro
dataFine = data fine lavoro

restituisce in formato lista valori tutte le date lavorative, escludendo il sabato e la domenica, comprese od uguali alle due date;
se le due date coincidono e sono lavorative, il risultato è la prima data

*/

Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)

---------------------------------------------------------------------------
La funzione restituisce, in formato testo, una serie di date;
per esempio: GiorniLavorativi ( "09/02/2007" ; "19/02/2007" ) restituisce:
09/02/2007
12/02/2007
13/02/2007
14/02/2007
15/02/2007
16/02/2007
19/02/2007

Per poi eventualmente contare i giorni, basterà usare la funzione: ConteggioValore

tipo:
ConteggioValore ( GiorniLavorativi ( dataInizio ; dataFine ) )
Raybaudi FMP 12 Adv. Windows XP SP3

Jkwxp
Messaggi: 78
Iscritto il: martedì 6 aprile 2010, 0:36

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da Jkwxp » sabato 30 gennaio 2016, 10:14

Volendo inserire i festivi quindi da non conteggiare ??????
File Maker pro 14 advance; Windows 10

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da PIG-NAH » sabato 30 gennaio 2016, 12:14

Il calcolo che ti fa saltare i sabati e le domeniche è questo sotto:

dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );

Prova a cancellarlo oppure sostituiscilo con:

datainizio = datainizio

Dipende da come reagisce datainizio con la parte ricorsiva della funzione qui sotto in quanto è sia parametro che variabile:

risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)

Molto più semplice è fare datafine - datainizio risultato numero.
FM8 ADV XP SP3

Jkwxp
Messaggi: 78
Iscritto il: martedì 6 aprile 2010, 0:36

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da Jkwxp » sabato 30 gennaio 2016, 22:10

Forse non mi sono spiegato bene. Nell'intervallo tra le due date vorrei eliminare dal conteggio oltre i sabati e le domeniche anche alcuni giorni festivi presi da una lista. Come faccio ?
PIG-NAH ha scritto:Il calcolo che ti fa saltare i sabati e le domeniche è questo sotto:

dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );

Prova a cancellarlo oppure sostituiscilo con:

datainizio = datainizio

Dipende da come reagisce datainizio con la parte ricorsiva della funzione qui sotto in quanto è sia parametro che variabile:

risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)

Molto più semplice è fare datafine - datainizio risultato numero.
File Maker pro 14 advance; Windows 10

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da PIG-NAH » domenica 31 gennaio 2016, 12:12

Devi creare una lista valori "LV" contenente le date delle feste aggiuntive:

Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; DataInizio ) ;
risultato = Casi ( ContaRicorrenze ( ElementiListeValori ( Get ( NomeFile ) ;"LV" ) ; RicavaComeTesto ( DataInizio ) ) ; "" & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
FM8 ADV XP SP3

Jkwxp
Messaggi: 78
Iscritto il: martedì 6 aprile 2010, 0:36

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da Jkwxp » domenica 31 gennaio 2016, 18:29

Ho creato una lista valori chiama LV ed inserendo i seguenti valori
01/01/2016
06/01/2016
12/01/2016
18/01/2016
Ho provato mettendo dataInizio = 01/01/2016 e data fine 31/12/2016 ho creato un campo calcolato inserendo ConteggioValore ( GiorniLavorativi ( DataInizio ; DataFine ) ) dove GiorniLavorativi e la tua funzione personalizzata ma sembra che la lista valori non funzioni perché mi da sempre lo stesso valore dove sbaglio?
PIG-NAH ha scritto:Devi creare una lista valori "LV" contenente le date delle feste aggiuntive:

Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; DataInizio ) ;
risultato = Casi ( ContaRicorrenze ( ElementiListeValori ( Get ( NomeFile ) ;"LV" ) ; RicavaComeTesto ( DataInizio ) ) ; "" & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
File Maker pro 14 advance; Windows 10

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da PIG-NAH » lunedì 1 febbraio 2016, 9:44

Calcolo non memorizzato con risultato testo.
FM8 ADV XP SP3

Jkwxp
Messaggi: 78
Iscritto il: martedì 6 aprile 2010, 0:36

Re: GiorniLavorativi ( dataInizio ; dataFine )  Risolto!

Messaggio da Jkwxp » martedì 9 febbraio 2016, 22:09

PIG-NAH ha scritto:Calcolo non memorizzato con risultato testo.
Grazie funziona tutto. Ma ancora un altro problema. Ho inserito della campi per ogni scheda mensile in cui mi faccio effettuare un calcolo con la formula da Te suggerita sui giorni lavorati per mese per ogni dipendente. Il problema è inserire i giorni di assenza sia singolarmente e sia eventuali malattie. Potrei fare il conteggio dei campi di assenza e delle malattie ma mi risulta complicato. Poi avrei comunque un altro problema che nella lista dei giorni lavorati non comparirebbero. Si potrebbe modificare la funzione facendogli tenere conto anche di questi campi e che quindi dovrebbero essere esclusi dalla lista dei giorni lavorati ?

Un'altra finezza come faccio a settare quella lista (giorni lavorati) facendo comparire vicino alla data anche il giorno della settimana ?

Ti allego il file
presenze.rar
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
File Maker pro 14 advance; Windows 10

Avatar utente
PIG-NAH
Messaggi: 2564
Iscritto il: martedì 7 agosto 2007, 2:00
Località: BIG BANG

Re: GiorniLavorativi ( dataInizio ; dataFine )

Messaggio da PIG-NAH » mercoledì 10 febbraio 2016, 11:38

Il file non lo posso aprire perchè ho la versione 8 di FM.
Comunque ciò che mi stai chiedendo è una consulenza e non ne faccio ne aggratis e ne a pago.
FM8 ADV XP SP3

Bloccato