Newsgroup: it.comp.appl.access
Titolo: escludere giorni da calendario

Salve a tutti.
Ho creato in un DB un tabella calendario fino al 2050, ora per� devo avere la possibilit� di escludere delle date con delle maschere ma con tre modalit� diverse,
1� escludere in base ai giorni della settimana (es. tutte le domeniche)
2� escludere in base alla data (es. dal 1 al 15 Agosto 2009 per ferie)
3� escludere in base ai giorni dell'anno (es. tutti i 25 dicembre e/o tutti i 1� maggio).
Nella tabella calendario ho gi� tuti i dati che mi servono per le varie scelte (Data; giorno della settimana; giorno in numero; mese;anno;numero giorno/mese e ovviamente una casella si/no)
Mi st� complicando la vita?
Qualcuno pu� aiutarmi?
Grazie in anticipo 
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 ha scritto nel messaggio 
news:gt7a4s$cr7$1...@news.nonsolonews.it...

Boh...io non ho ben capito cosa hai creato....
Spero di aver capito male ma ... hai per caso inserito 365 x 51 = 18615 
record????
Ciao
-- 
Roberto da Parma 


In realt� l'ho fatto in excel e poi ho importato la tabella, non pi� di 5 min di lavoro.
Rispiego: ho questo calendario completo dal 01/01/09 al 31/12/50 ora devo escludere le date NON DISPONIBILI che devono poter essere selezionate nei 3 modi diversi di cui sopra
Ciao


 ha scritto nel messaggio 
news:gt8r9q$qsl$1...@news.nonsolonews.it...

Si capisco che tu possa averci impiegato anche 2 min ma quello che volevo 
sapere � come hai impostato la tabella, per intenderci
giorno mese anno
1        1        2009
2        1        2009
...
l'hai impostata cos�?quindi in sostanza hai i tuoi 18615 records?
Quindi dai dati che hai poi vorresti escludere degli intervalli che 
corrispondono a record sulla tabella?
in questo caso :
1� escludere in base ai giorni della settimana (es. tutte le 
eniche)    -- [VBA] fai un filtro con format([data], "ddd")<>"dom"
2� escludere in base alla data (es. dal 1 al 15 Agosto 2009 per ferie)   --  
usa between ... and
3� escludere in base ai giorni dell'anno (es. tutti i 25 dicembre 
    -- puoi utilizzare la funzione per stabilire le festivit� ed escludere i 
giorni in base a quelli che ti restituisce la funzione
Scusatemi non ricordo chi � l'inventore....anzi se salta fuori aggiorno i 
dati....in ogni caso la pubblico qui di seguito
Option Compare Database
Option Explicit
' VERIFICA SE LA DATA E' UN GIORNO FESTIVO IN ITALIA
Public Function Festivo(myDate As Date) As Boolean
   Select Case myDate
      '1. GENNAIO NUOVO ANNO
      Case DateSerial(year(myDate), 1, 1)
          Festivo = True
      '6.GENNAIO - EPIFANIA
      Case DateSerial(year(myDate), 1, 6)
          Festivo = True
      '25. APRILE - LIBERAZIONE
      Case DateSerial(year(myDate), 4, 25)
          Festivo = True
      '1. MAGGIO FESTA LAVORATORI
      Case DateSerial(year(myDate), 5, 1)
          Festivo = True
      '2. GIUGNO FESTA DELLA REPUBBLICA
      Case DateSerial(year(myDate), 6, 2)
          Festivo = True
      'PASQUA
      Case Easter(year(myDate))
          Festivo = True
      'LUNEDI DI PASQUA
      Case Easter(year(myDate)) + 1
          Festivo = True
      '15. AGOSTO
      Case DateSerial(year(myDate), 8, 15)
          Festivo = True
      '1. NOVEMBRE - TUTTI I SANTI
      Case DateSerial(year(myDate), 11, 1)
          Festivo = True
      '8. DICEMBRE - IMMACOLATA CONCEZIONE
      Case DateSerial(year(myDate), 12, 8)
          Festivo = True
      '25. DICEMBRE - NATALE
      Case DateSerial(year(myDate), 12, 25)
          Festivo = True
      '26. DICEMBRE - SANTO STEFANO
      Case DateSerial(year(myDate), 12, 26)
          Festivo = True
      ' DATE DI FESTIVITA' LOCALI(PATRONO Ecc...)
      'Case DateSerial(year(myDate), nn, nn)
      ' Festivo = True
      '
      ' Per rendere pi� flessibile la parametrizzazione
      ' di Festivit� LOCALI si potrebbe usare una Tabella
      ' e recuperare il RS con la Data...!
      ' Case ELSE
          ' Dim rs as DAO.Recordset
          ' sSQL="SELECT * FROM Tb_FesteLocali " & _
          ' "WHERE Data=#" & Format$(myDate,"yyyymmdd") & "#"
          ' set rs=DbEngine(0)(0).OpenRecordset(sSQL, _
          ' dbOpenDynaset,dbReadOnly)
          ' ' Se il rs � vuoto significa che la data non � inserita
          ' come FESTIVITA'
          ' Festivo=NOT rs.Eof
          ' rs.Close
          ' Set rs=Nothing
   End Select
End Function
' CALCOLO DELLA PASQUA
Function Easter(year As Integer) As Date
   Dim d As Integer
   d = (((255 - 11 * (year Mod 19)) - 21) Mod 30) + 21
   Easter = DateSerial(year, 3, 1) + d + (d > 48) + 6 - _
   ((year + year \ 4 + d + (d > 48) + 1) Mod 7)
End Function
