Ricerca data escludendo i giorni festivi

Come utilizzare gli script. Automatizzare gli archivi. Utilizzo dei pulsanti

Moderatore: Moderatori

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Ricerca data escludendo i giorni festivi

Messaggio da cappello » venerdì 13 aprile 2007, 8:59

Buongiorno a tutti. Ho un nuovo quesito da proporre.
Ho un database "calendario" con tutti i giorni dell'anno con campi:
data
giorno = il giorno della settimana (lunedi,martedi, ecc)
tipo_giorno = lavorativo o festivo

Partendo dalla data di oggi 13-04-07 dovrei conteggiare ad es il decimo giorno lavorativo escludendo tutti i festivi. Dovrei ottenere 30-04-07 tenendo conto che i sabati e domeniche e il 25 aprile sono considerati festivi.
Consigli e suggerimenti sono i benvenuti.
Grazie
Nunzio
_________________
FM8.03 Adv. MacOSX 10.4.9

marianasu
Messaggi: 1235
Iscritto il: martedì 15 giugno 2004, 2:00
Località: Cagliari
Contatta:

Messaggio da marianasu » venerdì 13 aprile 2007, 10:11

Mi sembra che Daniele Raybaudi aveva fatto una funzione personalizzata...per me...adesso la cerco...CIAO M
FM8.03 Adv.- FM8.5 Adv Windows XP SP2

marianasu
Messaggi: 1235
Iscritto il: martedì 15 giugno 2004, 2:00
Località: Cagliari
Contatta:

Messaggio da marianasu » venerdì 13 aprile 2007, 10:19

Questa funzione personalizzata non fa esattamente al caso tuo ma la potresti adattare

Si chiama Feriali(dataInizio; dataFine) e restituisce i giorni feriali che intecorrono tra due date....ma potresti anche guardare nel sito di www.briandunning.com magari trovi la custom function che ti serve

/*funzione: Feriali(dataInizio;dataFine)
restituisce i giorni feriali tra due date
Daniele Raybaudi (Modificato)
*/
Consenti ( [
festivo = "domenica";
nextDate = dataInizio +1
];
Casi(
dataFine < dataInizio;"Errore";
dataFine - dataInizio > 10000;"Errore";
dataFine = dataInizio;If(NomeGiorno ( dataInizio ) = festivo;0;1);
dataFine - dataInizio;If(NomeGiorno ( dataInizio ) = festivo
or (Giorno ( dataInizio )="1" and Mese ( dataInizio )= "1")
or (Giorno ( dataInizio )="6" and Mese ( dataInizio )= "1")
or (Giorno ( dataInizio )="25" and Mese ( dataInizio )= "4")
or (Giorno ( dataInizio )=Giorno(Pasqua(Anno(dataInizio)))+1 and Mese(dataInizio)=Mese(Pasqua(Anno(dataInizio))))
or (Giorno ( dataInizio )="1" and Mese ( dataInizio )= "5")
or (Giorno ( dataInizio )="2" and Mese ( dataInizio )= "6")
or (Giorno ( dataInizio )="15" and Mese ( dataInizio )= "8")
or (Giorno ( dataInizio )="1" and Mese ( dataInizio )= "11")
or (Giorno ( dataInizio )="8" and Mese ( dataInizio )= "12")
or (Giorno ( dataInizio )="25" and Mese ( dataInizio )= "12")
or (Giorno ( dataInizio )="26" and Mese ( dataInizio )= "12")
; Feriali(NextDate;dataFine);1+Feriali(NextDate;dataFine))
)
)


CIAO M
FM8.03 Adv.- FM8.5 Adv Windows XP SP2

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Messaggio da cappello » venerdì 13 aprile 2007, 10:25

Grazie. Provo a studiarmela e vedo se riesco a capirci qualche cosa.
Ti faccio sapere se ci sono riuscito.
Ciao
_________________
FM8.03 Adv. MacOSX 10.4.9

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

Messaggio da raybaudi » venerdì 13 aprile 2007, 10:55

Quella è una "vecchia" funzione personalizzata... e poteva essere MOLTO semplificata, ma erano i primi tentativi...

Forse è meglio questa:
https://www.fmpro.it/modules.php?name=Fo ... pic&t=2589
Raybaudi FMP 12 Adv. Windows XP SP3

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Messaggio da cappello » venerdì 13 aprile 2007, 11:07

Come sempre gentilissimi e super veloci.
Grazie di nuovo, provo a studiarmela e a capire il funzionamento.
_________________
FM8.03 Adv. MacOSX 10.4.9

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Messaggio da cappello » venerdì 13 aprile 2007, 15:39

raybaudi ha scritto:Quella è una "vecchia" funzione personalizzata... e poteva essere MOLTO semplificata, ma erano i primi tentativi...

Forse è meglio questa:
https://www.fmpro.it/modules.php?name=Fo ... pic&t=2589
Abuso della vostra pazienza.
OK, modificando e aggiungendo campi al mio database ci sono quasi riuscito, ho solo bisogno di qualche altro piccolo suggerimento.

Usando la funzione di raybaudi
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
)

Database "Calendario"
data=data
giorno=lunedi, martedi, ecc
tipo_giorno=Lavorativo o Festivo
dataInizio
dataFine
Giorni_Lavorativi
giorni_lavorazione= giorni di lavorazione occorrente per il prodotto
conto_giorni=ConteggioValore ( Calendario::Giorni_Lavorativi )
giorni=giorni di lavorazione occorrente per il prodotto

Se ho ben capito nella funzione per giorni festivi prende solo il sabato e la domenica, avrei bisogno invece di prendere i giorni festivi in base a quelli da me stabiliti nel campo "tipo_giorno".
Nella lista del campo "Giorni_Lavorativi" dovrei poi prendere l'ultimo dato per poterlo copiare.
Grazie di nuovo
_________________
FM8.03 Adv. MacOSX 10.4.9

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

Messaggio da raybaudi » venerdì 13 aprile 2007, 16:15

Se hai già stabilito tu quali siano i giorni lavorativi, allora non c'è bisogno della funzione personalizzata, ma solo di un' AutoRelazione
Raybaudi FMP 12 Adv. Windows XP SP3

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Messaggio da cappello » venerdì 13 aprile 2007, 16:48

Autorelazione tra che cosa?
_________________
FM8.03 Adv. MacOSX 10.4.9

cappello
Messaggi: 137
Iscritto il: giovedì 30 marzo 2006, 2:00
Località: Atina (FR)
Contatta:

Messaggio da cappello » venerdì 13 aprile 2007, 18:02

cappello ha scritto:

Nella lista del campo "Giorni_Lavorativi" dovrei poi prendere l'ultimo dato per poterlo copiare.
Grazie di nuovo
Questo sono riuscito a farlo con
ParoleaDestra ( Giorni_Lavorativi ; 1 ) e otengo l'ultimo dato della lista.

Ora devo riuscire a capire come escludere giorni festivi del mio calendario.

Anche se adesso ho il cervello che mi fuma.
Ciao a tutti
Nunzio
_________________
FM8.03 Adv. MacOSX 10.4.9

Rispondi