Grazie Luca
quello della impossibilita' di sommare i dati temporali (come ad
esempio riesce a fare excel) e' uno dei grandi difetti di access.
il tipo dato date/time di access e' inteso come la coordinata di un
punto su una ascissa, non come un segmento.
se, ad esempio, in una variabile datetime tu scrivi 8 potresti pensare
di scrivere la "quantita'" di otto ore. in realta' scrivi una
data/ora, ovvero le ore otto del mattino del giorno 1 gennaio
dell'anno 100 d.C., che e' il giorno da cui "parte" il tempo di
access.
se fai una somma di 8 ore piu' altre 7 piu' altre 5 piu' altre 9, ti
potresti aspettare di ottenere 29 ore, magari formattando la variabile
in qualche modo.
invece no, quello che ottieni e' un'altra data, ovvero le ore 5 del
mattino del giorno 2 gennaio dell'anno 100 d.C. (29 meno le 24 ore del
1 gennaio 100), ovvero la coordinata di un altro punto sull'ascissa
del tempo (wow, pare star trek).
quello che potresti fare, se hai bisogno di sommare ore di lavoro di
lavoratori pagati ad ore, sarebbe quella di gestirle come interi,
oppure come interi a due cifre, avendo l'accortezza di considerare
l'ora composta non da 60 minuti ma da 100 unita' arbitrarie, per cui
il quarto d'ora diventa 0,25.
Lbo dall'altra macchina dell'ufficio wrote:
> >Ho provato a formattarlo come data-ora ma non riesco a sommarle fra di
> >se .
>
> quello della impossibilita' di sommare i dati temporali (come ad
> esempio riesce a fare excel) e' uno dei grandi difetti di access.
>
Grande quel Bill , senno come faceva a venderci office 98 !!!!!!!
Forse l'unico metodo e' quello di fare una piccola routine che converta la
parte decimale in secondi , che ne dici . in basic una volta si faceva ora
con questi oggetti non saprei dove metterla , mi sapresti dare un
suggerimento ???
Ciao Luca
mah, mi pare proprio che se con una di quelle funzioni di conversione
cv-qualcosa converti la data in numerico, ottieni un numero a
precisione singola in cui la parte intera indica il giorno e quella
decimale ore, minuti, secondi.
pero' non mentre e' abbastanza facile immaginare che la parte intera
sarebbero i giorni a partire dal famoso 1 gennaio 100, non saprei come
"tradurre" la parte decimale...
se la cosa ti serve, come generalmente succede, per tracciare orari di
lavoro (e non, magari, i tempi cronometrati dei 100 metri)
probabilmente una precisione fino al quarto d'ora e' sufficiente.
in questo caso potresti semplicemente utilizzare dei numerici che
potrebbero terminare con .00, .25, .50, .75.
oppure potresti direttamente sommare degli interi che rappresentino i
minuti, e scriverti una funzione che formatti il numero di minuti in
una stringa hh:mm, prendi str di int di minuti/60 e la concateni a str
minuti mod 60, una cosa del genere:
function num_minuti_to_str_ora(minuti)
dim str_hh
dim str_mm
str_hh = trim(str(minuti/60))
str_mm = trim(str(minuti mod 60))
num_minuti_to_str_ora = str_hh & ":" & str_mm
end function
non ci vuole gran che a prendere anche i secondi come base.
utilizzo trim perche' generalmente str aggiunge uno spazio prima o
dopo il numero, ovvero str(27) non ti restituisce "27" ma " 27".
Ti allego una risposta di qualche tempo fa, cui lbo aveva collaborato come
bravo traduttore (era il thread "working with time fields"):
l...@NOSPAM.iol.it ha scritto nel messaggio
<3455f15c...@news.iol.it>...
>il tipo è disperato perché lui ha bisogno di sommare ore per calcolare
>quante ore di lavoro uno totalizza. provando a sommare minuti oppure
>ore va tutto bene fino a che non si arriva a 24 ore, dopodiché il
>valore si resetta.
Sommando, ad esempio, 12:40 (ore:minuti) con 12:30 è normale ottenere 1:10
anziché 25:10, perché quest'ultima sarebbe una notazione non valida (se
visualizzassimo anche giorno-mese-anno ci accorgeremmo però che siamo
passati al giorno successivo). Fossimo in Excel suggerirei di mettere il
formato numerico [h]:mm, ma visto che in Access non c'è mi sono scritto la
seguente funzione:
Public Function CHm$(dataora)
CHm$ = ""
On Error Resume Next ' per prevenire dataora null
minuti& = dataora * 24 * 60
ore& = minuti& \ 60: minuti& = minuti& - ore& * 60
CHm$ = CStr(ore&) & ":" & IIf(minuti& < 10, "0", "") & CStr(minuti&)
On Error GoTo 0
End Function
Pertanto per visualizzare, ad esempio, in un controllo la somma dei
controlli ora1 e ora2 in formato "[h]:mm" (cioè come 25:10 di prima per
intenderci), basta mettere origine controllo
= CHm$ ( [ora1]+[ora2] )
--
Ciao
G.Paolo Bizzaro - g...@rsadvnet.NOSPAM.it
Lbo dall'altra macchina dell'ufficio ha scritto nel messaggio
<3545d160....@news.ntt.it>...
>quello della impossibilita' di sommare i dati temporali (come ad
>esempio riesce a fare excel) e' uno dei grandi difetti di access.
Quello di disporre di un tipo Data/Ora è un grande pregio di Access.
(e poi, Excel '97 non gestisce anche lui tipo data/ora nello stesso
modo di Access? Io ho avuto questa impressione ma non sono ancora un
profondo conoscitore di Excel).
>
>il tipo dato date/time di access e' inteso come la coordinata di un
>punto su una ascissa, non come un segmento.
A livello di rappresentazione interna può essere letto così. Ma a
livello di utilizzo esso rappresenta un punto sulla retta continua del
tempo. Tale retta può essere misurata con una precisione che arriva al
secondo.
>se, ad esempio, in una variabile datetime tu scrivi 8 potresti
pensare
>di scrivere la "quantita'" di otto ore. in realta' scrivi una
>data/ora, ovvero le ore otto del mattino del giorno 1 gennaio
>dell'anno 100 d.C., che e' il giorno da cui "parte" il tempo di
>access.
Ehm, se scrivi il numero intero 8, Access (97) interpreta come 8
giorni a partire dalla data di inizio che è il 30/12/1899 e quindi
7/1/1900. Se scrivi -1, interpreta come un giorno prima della data di
inizio e quindi 29/12/1899.
>
>se fai una somma di 8 ore piu' altre 7 piu' altre 5 piu' altre 9, ti
>potresti aspettare di ottenere 29 ore, magari formattando la
variabile
>in qualche modo.
>invece no, quello che ottieni e' un'altra data ovvero le ore 5 del
>mattino del giorno 2 gennaio dell'anno 100 d.C
Grande Access! E' proprio quello che ci si aspetta lavorando sul
tempo. Se alle 23.30 salutando il collega Excel gli si dice "ci
vediamo tra 9 ore" e lui risponde "ah, alle 32 e mezza" non farebbe
una bella figura... Access risponde prontamente "Ok, alle 8.30 del
giorno successivo ad oggi".
>
>quello che potresti fare, se hai bisogno di sommare ore di lavoro di
>lavoratori pagati ad ore, sarebbe quella di gestirle come interi,
>oppure come interi a due cifre, avendo l'accortezza di considerare
>l'ora composta non da 60 minuti ma da 100 unita' arbitrarie, per cui
>il quarto d'ora diventa 0,25.
Esatto... se si vuole lavorare su numeri si usano numeri (che poi si
interpretano in base all'unità di misura cm, lire, giorni, minuti,
ore...)
Se si vuole lavorare su intervalli temporali si usano i tipi
Date/Time. Access però fornisce anche delle potentissime routine per
lavorare su questi tipi di dati e trarre da essi ogni calcolo. In
particolare dateadd e datediff permettono di lavorare su ogni unità di
misura degli intervalli temporali: secondi, minuti, ore, giorni,
giorno dell'anno, settimane, giorno della settimana, mesi, trimestri,
anni.
Così se uno inizia a lavorare alle 23.30 di oggi e termina alle 7.30
di domani, basta chiedere a datediff di fare la differenza tra le due
date (02/05/98 23.30 e 03/05/98 07.30) in ore per ottenere 8.
Comunque bisogna riconoscere che capire a fondo come si comportano i
prodotti Microsoft nei confronti delle date è qualcosa di molto
complesso. Specialmente con la nuova introduzione del "salvagente" per
l'anno 2000 per cui il modo di interpretare le date è cambiato
rispetto alle precedenti versioni. Ora, a seconda delle versioni e
delle impostazioni internazionali, la stringa "01/12/15" può essere
interpretata "01 gennaio 1915", "01 gennaio 2015", "12 gennaio 1915",
"12 gennaio 2015", "15 dicembre 1901", "15 dicembre 2001".
Da spararsi!
Salutissimi
--
________
\ /\ /
\/ \/ T R X
/\ /\ -------- (c)
/ \/ \
^^^^^^^^
ah, guarda, meno male, senno' sembrava che ero io quello che difendeva
access a tutti i costi... :-)
>>quello della impossibilita' di sommare i dati temporali (come ad
>>esempio riesce a fare excel) e' uno dei grandi difetti di access.
>Quello di disporre di un tipo Data/Ora è un grande pregio di Access.
come no, se funzionasse anche con "segmenti" e non con "punti"...
meglio averlo che non averlo, eh, per carita'. pero' per le somme e
le differenze di tempi, come ad esempio per la gestione di orari di
lavoro bisogna trafficare un bel po'.
>(e poi, Excel '97 non gestisce anche lui tipo data/ora nello stesso
>modo di Access? Io ho avuto questa impressione ma non sono ancora un
>profondo conoscitore di Excel).
no, excel ti permette, appunto, anche di sommare (algebricamente)
quantita' di tempo e di formattarle (brr...) o come date assolute o
come tot ore tot secondi ecc.
ti faccio un esempio di una cosa concreta che mi e' servita: volevo
avere una cosa che quando mi sedevo al pc la lanciavo, facevo clic su
un pulsante, lui segnava che ora era. poi quando andavo via segnava
di nuovo l'ora e conservava tutte e due. faceva la differenza e la
metteva da una parte, in modo da sapere quanto tempo avevo lavorato
quel giorno. poi mi faceva una media giorno per giorno delle ore
calcolate, moltiplicava totale "vero" per la media, faceva quindi
proiezioni su quanto avrei guadagnato tenendo quella certa media e mi
suggeriva quante ore in media dovevo lavorare i restanti giorni del
mese per raggiungere il traguardo delle otto ore giornaliere di media,
mi preparava un rapporto ufficioso e uno ufficiale, con giornate di
7-8 ore di media piu' altre cosine.
questo perche' disponevo di una certa flessibilita' nell'orario:
fondamentalmente se arrivavo alle 14 e andavo via alle 24 un giorno,
poi arrivavo alle 10 e andavo via alle 16, nella tabella "ufficiale"
segnavo che ero entrato alle 8.30 ed ero andato via alle 16.30 per due
giorni. la somma delle ore era la stessa ed eravamo tutti contenti.
ora, con excel me la sono fatta in minuti, con access non oso pensare
al casino che avrei dovuto mettere su.
>>il tipo dato date/time di access e' inteso come la coordinata di un
>>punto su una ascissa, non come un segmento.
>A livello di rappresentazione interna può essere letto così. Ma a
>livello di utilizzo esso rappresenta un punto sulla retta continua del
perche', io che sto a di'? :-)
>tempo. Tale retta può essere misurata con una precisione che arriva al
>secondo.
ecco, appunto... tu pensa a dover fare un'applicazione che faccia la
media o altre elaborazioni sui tempi delle gare sui cento metri, o
altre applicazioni industriali dove i millesimi contano...
>Ehm, se scrivi il numero intero 8, Access (97) interpreta come 8
>giorni a partire dalla data di inizio che è il 30/12/1899 e quindi
ok, per gli 8 giorni e non otto ore, ma la data di inizio, ho
controllato sull'help, e' il primo gennaio dell'anno 100. en passant,
l'ultimo anno con cui si potra' usare access e' il 9999.
>>potresti aspettare di ottenere 29 ore, magari formattando la
>una bella figura... Access risponde prontamente "Ok, alle 8.30 del
>giorno successivo ad oggi".
ok, e quante ore sono passate? tu capisci che se io pago ad ore
preferisco sapere questo...
>Esatto... se si vuole lavorare su numeri si usano numeri (che poi si
>interpretano in base all'unità di misura cm, lire, giorni, minuti,
>ore...)
>Se si vuole lavorare su intervalli temporali si usano i tipi
>Date/Time. Access però fornisce anche delle potentissime routine per
ok, ma se io faccio due volte now e voglio sapere la differenza? tu
dici:
>di domani, basta chiedere a datediff di fare la differenza tra le due
>date (02/05/98 23.30 e 03/05/98 07.30) in ore per ottenere 8.
e se voglio sommare tutte queste differenze a fine mese? ottengo,
diciamo, 8*20=160 ore, ovvero una cosa che per access e' le ore 16 del
6 gennaio 100. e adesso formattamelo come 160... e moltiplicalo per
le tot lire che guadagni l'ora... voglio proprio vedere cosa esce
fuori... :-)
======================================================
my opinions do not necessarily have to be true.
======================================================
per rispondermi rimuovere NOSPAM. dall'indirizzo email
to answer me remove NOSPAM. from email address
======================================================
Perfettamente daccordo con te , infatti non riuscendo a fare i calcoli con le ore , ed essendo un buon conoscitore di Excel , mi sono stupito della cosa , e mi ha spinto a chiedere aiuto al NG . Credo che la possibilita offerta da Access sia molto interessante , specialmente riferita a linguaggi di vecchia data come il dbIV di cui conoscevo abbastanza bene la programmazione , ma oggi a distanza di quasi 8 anni , ti confesso che sono in difficolta a creare un modulo nel VBA di Access .Proprio in riferimento ai problemi delle ore , dove la posso mettere la Function che mi sono fatto per il calcolo dei minuti esatti ???? Mi spiego :
Ho formattato il campo delle ore lavorative come numero con 2 decimali
.
Nel report ho la somma delle ore lavorate , logicamente decimali.
Poi avevo pensato di creare un campo che mi facesse riferimento alla
funzione da te suggerita .
Luca
mah, direi di no...
Lbo da casa ha scritto nel messaggio <354c59e...@news.ntt.it>...
>>(e poi, Excel '97 non gestisce anche lui tipo data/ora nello stesso
>>modo di Access? Io ho avuto questa impressione ma non sono ancora un
>>profondo conoscitore di Excel).
>
>no, excel ti permette, appunto, anche di sommare (algebricamente)
>quantita' di tempo e di formattarle (brr...) o come date assolute o
>come tot ore tot secondi ecc.
Eppure, strano ma vero, entrambi i prodotti gestiscono (internamente)
le date nello stesso modo (almeno con Office '97). Una data/ora viene
convertita in un numero decimale dove la parte intera rappresenta il
n. di giorni di distanza da una data di riferimento mentre la parte
decimale rappresenta l'ora. Poichè in un giorno vi sono 86.400
secondi, ogni secondo vale per 1/86400 = 0.000011574. L'ora viene
convertita nella parte decimale con la formula: (ore*60*60 +
minuti*60 + secondi)/86400.
Per avere una conferma:
in Access: crea un campo data/ora, inserisci un'ora e poi modifica il
campo in precisione doppia.
in Excel: formatta una cella come ora, inserisci un'ora e poi formatta
la cella come numero con molti decimali.
>ti faccio un esempio di una cosa concreta che mi e' servita: volevo
>avere una cosa che quando mi sedevo al pc la lanciavo, facevo clic su
>un pulsante, lui segnava che ora era. poi quando andavo via segnava
>di nuovo l'ora e conservava tutte e due. faceva la differenza e la
>metteva da una parte, in modo da sapere quanto tempo avevo lavorato
>quel giorno. poi mi faceva una media giorno per giorno delle ore
>calcolate, moltiplicava totale "vero" per la media, faceva quindi
>proiezioni su quanto avrei guadagnato tenendo quella certa media e mi
>suggeriva quante ore in media dovevo lavorare i restanti giorni del
>mese per raggiungere il traguardo delle otto ore giornaliere di
media,
>mi preparava un rapporto ufficioso e uno ufficiale, con giornate di
>7-8 ore di media piu' altre cosine.
>
>ora, con excel me la sono fatta in minuti, con access non oso pensare
>al casino che avrei dovuto mettere su.
Non c'è dubbio che con Excel ci metti meno: è più maneggevole per
calcoli su tabelle, totali parziali, subtotali ecc. Ma per quanto
riguardi i calcoli con le date, Excel e Access si comportano nello
stesso modo: usano lo stesso principio per la rappresentazione interna
e quindi sono in grado di fare le stesse cose. Se ho un orario di fine
e un orario di inizio e voglio calcolare il tempo trascorso, faccio
OraFine - OraInizio. Se l'intervallo tra i due è di 26 ore e 13
minuti, ottengo la data/ora corrispondente a 26 ore e 13 minuti dopo
la data/ora di riferimento.
>> Tale retta può essere misurata con una precisione che arriva
>> al secondo.
>
>ecco, appunto... tu pensa a dover fare un'applicazione che faccia la
>media o altre elaborazioni sui tempi delle gare sui cento metri, o
>altre applicazioni industriali dove i millesimi contano...
Ma anche i formati di Excel arrivano al secondo e non hanno i
millesimi. O sbaglio?
>>Ehm, se scrivi il numero intero 8, Access (97) interpreta come 8
>>giorni a partire dalla data di inizio che è il 30/12/1899 e quindi
>
>ok, per gli 8 giorni e non otto ore, ma la data di inizio, ho
>controllato sull'help, e' il primo gennaio dell'anno 100. en
passant,
>l'ultimo anno con cui si potra' usare access e' il 9999.
>
Si, qui basta intendersi. Access permette di rappresentare date
comprese tra l'1/1/100 e il 31/12/9999. Qui addirittura "batte" Excel
che può rappresentare solo date tra il 1/1/1900 e il 31/12/9999.
(Incredibile ma vero: in Excel non è possibile rappresentare date
anteriori al 1900! Provate a inserire in una cella 30/12/1899, non ve
la tratta come data e non riesce a fare calcoli su di essa)
Nella rappresentazione interna, viene presa una data/ora di
riferimento come origine per l'asse dei tempi.
In Access è 30/12/1899 0.00. Se si converte il n. 0 in una data/ora,
questa è 30/12/1899 0.00. Se si converte -1 si ottiene 29/12/1899
0.00. Se si converte 1 si ha 31/12/1899 0.00. E cosi via.
In Excel la data di riferimento è lo 0/1/1900 (si, lo zero
gennaio!!!). Se digito 0 in una cella e poi la formatto come data
ottengo 0/1/00. Se digito -1 non me lo accetta (non ha date anteriori
al 1900), se digito 1 mi da 1/1/00. (Poi per complicare le cose, Excel
permette di usare un'altro sistema di riferimento, questo centrato sul
2/1/1904, fare Strumenti|Calcolo|Sistema data 1904)
>ok, ma se io faccio due volte now e voglio sapere la differenza? tu
>dici:
>
>>di domani, basta chiedere a datediff di fare la differenza tra le
due
>>date (02/05/98 23.30 e 03/05/98 07.30) in ore per ottenere 8.
>
>e se voglio sommare tutte queste differenze a fine mese? ottengo,
>diciamo, 8*20=160 ore, ovvero una cosa che per access e' le ore 16
del
>6 gennaio 100. e adesso formattamelo come 160... e moltiplicalo per
>le tot lire che guadagni l'ora... voglio proprio vedere cosa esce
>fuori... :-)
Visto che Access ed Excel operano con lo stesso principio, in Access
si possono ottenere le stesse cose (chiaramente con le modalità
tipiche di Access).
La vera differenza tra i due prodotti è che Excel dispone di alcuni
FORMATI in più rispetto ad Access ovvero: [h].mm, [mm].ss, [ss].
Questi formati permettono di visualizzare una data/ora in termini di
intervallo espresso in ore.minuti, minuti.secondi o secondi rispetto
all'origine dell'asse dei tempi. Prendendo l'esempio delle 160 ore, se
si prova a digitare in una cella formattata come ora le cifre 160.0 e
poi si formatta in data/ora, si ottiene 6/1/00 16.00. Mettendo come
formato quello che nell'elenco è rappresentato come "37.30.55" (che
sarebbe il [h].mm), si ottiene 160.00.00.
Verificato tutto ciò, risulta che anche in Access si possono ottenere
le stesse cose.
Creamo l'esempio delle ore di lavoro.
TABELLA: Orari
Campo: Nome=OraInizio, Tipo=Data/Ora, Formato=Ora Estesa
Campo: Nome=OraFine, Tipo=Data/Ora, Formato=Ora Estesa
DATI:
INIZIO FINE
3.10 12.10
3.15 22.10
2.10 23.55
QUERY: Orari_Intervalli
Sql: Select OraInizio, OraFine,[OraFine]-[OraInizio] As Intervallo
From Orari;
Mettere per tutte le colonne la proprietà Formato = "Ora breve 24h",
digitandola a mano se non compare nell'elenco.
RISULTATO:
OraInizio OraFine Intervallo
3.10 12.10 9.00
3.15 22.10 18.55
2.10 23.55 21.45
Adesso proviamo a calcolare il totale delle ore. Basta fare una query
che somma il campo Intervallo della precedente query. Però il
risultato che si ottiene lo si vorrebbe esprimere non come una
data/ora nè come un numero decimale ma come in Excel (totale ore:
minuti: secondi).
Questo formato non esiste in Access. Però Access ci fornisce tutte le
funzioni per fare quello che vogliamo con le date/ore e quindi ce lo
possiamo costruire scrivendo una funzione come la seguente:
Function FormatoIntervallo(Data As Date) As String
Dim Ore As Long
Dim Minuti As Long
Dim Secondi As Long
'-- Calcola le ore a partire dalla data di riferimento
Ore = DateDiff("h", 0, Data)
'-- Prende i minuti
Minuti = Minute(Data)
'-- Prende i secondi
Secondi = Second(Data)
'-- Crea la stringa
FormatoIntervallo = Ore & ":" & Minuti & ":" & Secondi
End Function
A questo punto scriviamo la query calcolando totale ore, media e
totale importo (calcolando 30.000 all'ora):
SELECT
FormatoIntervallo(Sum([Orari_Intervalli].[Intervallo]))
AS[Totale ore],
FormatoIntervallo(Avg([Orari_Intervalli].[Intervallo]))
AS [Mediaore],
Sum([Intervallo]*24*30000)
AS Importo
FROM Orari_Intervalli;
RISULTATO:
Totale ore Media ore Importo
49:40:0 16:33:20 1490000
Scusate la lunghezza ma volevo essere esaustivo e mettere tutti nelle
condizioni di fare delle prove. Se scoprite qualche altro aspetto
interessante non mancate di segnalarlo.
Salutissimi.
Quando ho bisogno della somma di differenzaOre posso usare l'espressione
=somma(differenzaOre) se non supero le 24 ore, altrimenti arriviamo al problema
ormai risaputo.
Ho creato una funzione che mi mostri il valore reale della somma delle ore.
Quindi nella scheda o report uso l'espressione =Stringaore(somma(differenzaOre))
La funzione č questa:
'------------------------------------------------------------
' Funzione Stringaore
' Funzione creata il 10/01/97 da Silvio Mazzetto
' Converte la differenza di ore maggiore di 24 in formato di ore
'------------------------------------------------------------
'
Function Stringaore (Somma As Variant)
On Error GoTo Stringa_Err
Dim Ora As String, Somma24 As Single
If IsNull(Somma) Then Stringaore = "0.00": Exit Function
Somma24 = Somma * 24 ' estrae il numero delle ore
If Somma24 >= 100 Then
Ora = Left$(Str$(Somma24), 4)
ElseIf Somma24 >= 10 Then Ora = Left$(Str$(Somma24), 3)
ElseIf Somma24 >= 1 Then Ora = Left$(Str$(Somma24), 2)
Else Ora = "0"
End If
Stringaore = Ora & "." & Format$(Somma, "nn")
Stringa_exit:
Exit Function
Stringa_Err:
MsgBox Error$
Resume Stringa_exit
End Function
Spero di aver contribuito alla soluzione.
Silvio
>[...]
>Eppure, strano ma vero, entrambi i prodotti gestiscono (internamente)
>le date nello stesso modo (almeno con Office '97). Una data/ora viene
>convertita in un numero decimale dove la parte intera rappresenta il
>n. di giorni di distanza da una data di riferimento mentre la parte
>decimale rappresenta l'ora. Poichè in un giorno vi sono 86.400
>secondi, ogni secondo vale per 1/86400 = 0.000011574. L'ora viene
>convertita nella parte decimale con la formula: (ore*60*60 +
>minuti*60 + secondi)/86400.
Sono contento che qualcun'altro ripeta quanto avevo detto per
ben due volte, poi mi sono stancato di ripetere :-))))
>[...]
>(Incredibile ma vero: in Excel non è possibile rappresentare date
>anteriori al 1900! Provate a inserire in una cella 30/12/1899, non ve
>la tratta come data e non riesce a fare calcoli su di essa)
Questo e' vero, ma non incredibile. Qualche rivista ne aveva
gia' parlato, il motivo si' che e' incredibile: Excel aveva
ereditato, nelle prime versioni, un errore gia' presente in
Multiplan: considerava bisestile l'anno 1900, che invece (a
seguito della riforma gregoriana) essendo un anno secolare non
multiplo di 400, deve avere solo 365 giorni. Per evitare il
dilemma (correggere il comportamento, o perdere la compatibilita'
con dati di versioni precedenti) pare che la Microsoft abbia
deciso di tagliare la testa al toro... :-)))
>Scusate la lunghezza ma volevo essere esaustivo e mettere tutti nelle
>condizioni di fare delle prove. Se scoprite qualche altro aspetto
>interessante non mancate di segnalarlo.
Mi e' sembrata una spiegazione veramente completa ed esaustiva;
forse la spiegazione a me sembrava banale, perche' in VB 2.0
(la prima versione che ho usato) se ricordo bene non c'era il
tipo dati Date, e semplicemente si usava il tipo equivalente
(cioe' Double !)
-------------------------------
Louis Cretier - R1100RS/R80GS
http://www.show.it/lcretier.htm
-------------------------------
"L'alcol uccide lentamente - Non importa, non ho fretta!"