General |
6.130 Visualizzare un campo o variabile di tipo Data/ora con valore maggiore di 24 ore nel formato HHH:mm |
Roberto |
Al contrario di quanto avviene con Excel, con Access non esiste un formato nativo che permetta di visualizzare un valore di tipo Data/ora nel caso che sia maggiore di 23 ore, 59 minuti e 59 secondi. Ci sono diversi approcci al problema. Il primo, specie se il valore risulta dalla somma di orari e poi deve essere usato con altre istruzioni aritmetiche (ad esempio essere moltiplicato per un costo unitario), è quello di esprimere il valore in ore e centesimi di ore quindi assegnargli il formato Fisso; ciò si ottiene moltiplicando il valore in Data/ora per 24. Adottando questa soluzione il valore di 40 ore e mezzo non verrà visualizzato come 40:30 , ma come 40,50 . Se invece è assolutamente necessario visualizzare il valore Data/ora nel formato HHH:mm si può visualizzare una stringa così ottenuta: OrarioHHHmm = Int(Orario) * 24 + Hour(Orario) & ":" & Format(Minute(Orario), "00")dove OrarioHHHmm è una stringa in cui viene formattato il risultato maggiore di 24 ore, mentre Orario è il campo o variabile di tipo Data/ora con un valore maggiore di 24 ore che verrà visualizzato in ore e minuti nella stringa OrarioHHHmm. C'è infine una terza ipotesi, suggerita da Sergio MAZZA, che prevede di aggiungere ai riferimenti del database quelli a Microsoft Excel e poi usare per la somma e la visualizzazione funzioni di Excel, insomma qualcosa del genere: Function sommaOreConExcel(orario1 As String, orario2 As String) Dim oApp As Excel.Application Set oApp = CreateObject("Excel.Application") sommaOreConExcel = oApp.WorksheetFunction.Sum(Orario1, Orario2) oApp.Quit Set oApp = Nothing End FunctionNaturalmente se si vuole solo la formattazione di un solo orario l'argomento orario2 dovra contenere il valore "00:00". |