Pagina 1 di 1

GiorniLavorativi ( dataInizio ; dataFine )

Inviato: venerdì 9 febbraio 2007, 20:11
da raybaudi
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 ) )

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: sabato 30 gennaio 2016, 10:14
da Jkwxp
Volendo inserire i festivi quindi da non conteggiare ??????

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: sabato 30 gennaio 2016, 12:14
da PIG-NAH
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.

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: sabato 30 gennaio 2016, 22:10
da Jkwxp
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.

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: domenica 31 gennaio 2016, 12:12
da PIG-NAH
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
)

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: domenica 31 gennaio 2016, 18:29
da Jkwxp
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
)

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: lunedì 1 febbraio 2016, 9:44
da PIG-NAH
Calcolo non memorizzato con risultato testo.

Re: GiorniLavorativi ( dataInizio ; dataFine )  Risolto!

Inviato: martedì 9 febbraio 2016, 22:09
da Jkwxp
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

Re: GiorniLavorativi ( dataInizio ; dataFine )

Inviato: mercoledì 10 febbraio 2016, 11:38
da PIG-NAH
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.