Ricerca data escludendo i giorni festivi
Moderatore: Moderatori
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
Ricerca data escludendo i giorni festivi
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
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
FM8.03 Adv. MacOSX 10.4.9
-
- Messaggi: 1235
- Iscritto il: martedì 15 giugno 2004, 2:00
- Località: Cagliari
- Contatta:
-
- Messaggi: 1235
- Iscritto il: martedì 15 giugno 2004, 2:00
- Località: Cagliari
- Contatta:
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
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
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
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
Forse è meglio questa:
https://www.fmpro.it/modules.php?name=Fo ... pic&t=2589
Raybaudi FMP 12 Adv. Windows XP SP3
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
Abuso della vostra pazienza.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
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
FM8.03 Adv. MacOSX 10.4.9
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
-
- Messaggi: 137
- Iscritto il: giovedì 30 marzo 2006, 2:00
- Località: Atina (FR)
- Contatta:
Questo sono riuscito a farlo concappello ha scritto:
Nella lista del campo "Giorni_Lavorativi" dovrei poi prendere l'ultimo dato per poterlo copiare.
Grazie di nuovo
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
FM8.03 Adv. MacOSX 10.4.9