Newsgroup: it.comp.appl.access
Titolo: anni bisestili e mesi chi li gestisce

mi interessava sapere qual'č il "motore" o
codice che gestisce il calcolo sulle date
cioč:
se uso DateAdd, il conto degli anni bisestili
(e quindi la gestione di febbraio, poichč ipotizzo
che per i mesi diversi da feb non vi siano problemi)
č fatto da Access (quindi ha un proprio codice
di calcolo interno) oppure la gestione č rimandata
al sistema operativo (windows o altri)?
Il calendario quindi, č interno o č quello del sistema operativo?
Chiedo questo, per sapere se, una volta impostato il codice
di un calcolo con dateAdd, e mi capita di esportare il mio db
su un altra versione di Access (es. la 2000 o successive), o se cambio
il sistema operativo stesso con uno che puň avere un bug, devo fare
attenzione ad eventuali errori, oppure gli anni bisestili e i mesi sono tutti
interni ad access?
Se č interno ad access rimarrebbe il problema di un eventuale bug
delle varie versioni successive a quella al momento utilizzata.
Ipotizzo a questo punto che l'unico modo certo per conteggiare
i giorni di ogni mese in base agli anni č quello
di un conteggio di verifica fatto manualmente.
Se qualcuno ha qualche idea.
Provo a fare un post specifico.
auguri e bn (buon natale)

 al sistema operativo (windows o altri)?
Se proprio vuoi fartelo da te, puoi sfruttare la seguente funzione:
Public Function GiorniDelMese(NumMese As Integer, Anno As Integer) As
Integer
 'restituisce il numero di giorni nel mese 1..12 dell'anno yyyy,
considerando 29 feb per anni bisestili
 Select Case NumMese
  Case 1:  GiorniDelMese = 31
  Case 2:
   Dim Bisestile As Boolean
   Bisestile = ((Anno Mod 4) = 0 And (Anno Mod 100)) Or (Anno Mod 400) = 0
   GiorniDelMese = 28 + IIf(Bisestile, 1, 0)
  Case 3:  GiorniDelMese = 31
  Case 4:  GiorniDelMese = 30
  Case 5:  GiorniDelMese = 31
  Case 6:  GiorniDelMese = 30
  Case 7:  GiorniDelMese = 31
  Case 8:  GiorniDelMese = 31
  Case 9:  GiorniDelMese = 30
  Case 10: GiorniDelMese = 31
  Case 11: GiorniDelMese = 30
  Case 12: GiorniDelMese = 31
  Case Else: GiorniDelMese = 0 'errore
 End Select
End Function
Utilizzando Month(TuaData) e Year(TuaData), oppure Mid() se ce l'hai in
formato testo, puoi immediatamente testare se una data è valida o meno.
Se conosci il C++, posso inviarti una classe "Date" che avevo scritto quasi
10 anni fa, quando non eravamo viziati con DateAdd, DatePart ecc... anzi non
c'era neanche il tipo predefinito date... :-)
Comunque Access sembra abbastanza affidabile nel gestire le date, non
dovrebbe esserci bisogno di reinventare l'acqua calda :-)
--
Ciao, AntoGal
*************************************************
Gestione punti vendita (casse e pos NCR)
 
www.powerretail.it
-------------------------------------------------------------
per scaricare un gioco di DAMA ITALIANA
http://volftp.mondadori.com/italiani/galletta/
*************************************************

 Comunque Access sembra abbastanza affidabile nel gestire le date
mai dire mai :-)
comunque una ulteriore verifica non fa mai male
e poi access 2000 insegna a non fidarsi, appunto di access2000,
chissà le prossime versioni, considerando il trend rabbrividisco.....................
conosco poco il c++, 
però non mi dispiacerebbe vedere come è l'impostazione logica
di una classe "Date"
riauguri, rigrazie e ba (buon anno)
per e-mail togliere NONOSPAM

 di una classe "Date"
Ok, te la mando in e-mail. Fondamentalmente gestisce gli operatori sulle
date: ad esempio fare Data1 + Data2 non è tanto scontato. Un'altra curiosità
è che si può sapere il giorno della settimana (Lunedì, Martedì...) fornendo
una data, senza ciclare partendo da una data e giorno noto, ma sfruttando
una cosa che si chiama "Congruenza di Zeller".
