Newsgroup: it.comp.lang.visual-basic
Titolo: Ho un problema

Ragazzi, ho un problema.
Ho posto ieri sul group un quesito al quale mi è stata data una risposta 
purtroppo fuori centro, così ci rifaccio.
Il quesito farà sorridere i masticatori di codice che vivacchiano in questo 
luogo, ma proprio per questo spero che me lo risolvano benevolmente.
Quesito: se in un textbox scrivo 10:25:30 inteso come quantità di ore, 
minuti e secondi e non come orario (cioè sono le dieci, 25 minuti e trenta 
secondi), come faccio a formattarlo in tempo e non come orario giornaliero e 
passarlo ad una variabile? Mi hanno già risposto "con CDate", ma CDate 
memorizza il dato nella variabile come Date pertendo da una stringa intera, 
e me lo fa poi trasferire in un campo di Database come ad esempio 
10/10/2004.
Insomma, spero (ma non credo) di essere stato abbastanza chiaro, ed in coda 
aggiungo: come impostare un campo di DBAccess creato con Visual Data Manager 
in modo che possa accoglierlo nel formato che mi interessa (Date/Time, Long, 
Etc. Etc.)?
Sperando in qualcosa do bbuono, vi saluto. Ciao 



 passarlo ad una variabile?
Il quesito non è così banale come sembra.
Non esiste un tipo di dato che interpreti gli intervalli di tempo.
Il tipo più simile è Date, e puoi usare tranquillamente quello, ma non devi
confonderti tra il dato contenuto e la sua rappresentazione.
Date è in realtà un double, dove la parte intera sono i giorni trascorsi dal
30/12/1899 e la parte decimale sono le frazioni di giorno dalla mezzanotte.
Tu mi dirai "e a me questo che mi frega?".
Ti frega perchè così puoi capire perchè
Dim d As Date
d = 0
Debug.Print ? Format$(CDate(0), "dd/MM/yyyy hh.mm.ss")
' scrive "30/12/1899 00.00.00" "00.00.00"!
d = 1 / 24
Debug.Print d ' scrive "30/12/1899 01.00.00"
d = d + 1
Debug.Print d ' scrive "31/12/1899 01.00.00"
Come vedi in d c'è un giorno e un'ora, ma VB interpretandola come data ti
deve dare per esteso una data.
Adesso, come fare per avere una *stringa* che rappresenti il valore giusto?
Risolvendo il problema del "qual è il numero minimo di monete necessarie per
fare la somma X?" :)
Ti faccio un esempio sulla data di prima :
Function GiorniEOreMinuti(ByVal d As Date) As String
    Dim g As Long
    Dim o As Long
    Dim m As Long
    g = Fix(d) ' troncato
    d = d - g
    o = Fix(d * 24#)
    d = d - (o / 24#)
    m = CLng(d * 24# * 60#)
    ' nota che non uso Fix() sull'ultimo
    ' a causa di eventuali arrotondamenti
    ' (qui ti rimando all'aritmetica in virgola mobile)
    GiorniEOreMinuti = g & " giorni e " & o & " ore e " & m & " minuti"
End Function
La riprova che funziona veramente?
' 1 giorno, 2 ore e 66 minuti
Debug.Print GiorniEOreMinuti(1 + (2/24) + (66 / (24 * 60)))
Ciao
-- 
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Function GiorniEOreMinuti(ByVal d As Date) As String
Nota che ho usato il tipo Date come dato di partenza, ma tu puoi usare ad
es. un Long che contenga i secondi trascorsi.
Il concetto per la "conversione" non cambia di molto.
Es:
1000 secondi, quante ore sono?
E tolte queste, quanti minuti restano?


 ha scritto nel messaggio 
news:Zwlqd.418223$35.18...@news4.tin.it...


 meglio in inglese?).
mica tanto. tank e' il serbatio o il carrarmato, non il ringraziamento :)