Newsgroup: it.comp.appl.access
Titolo: "Format" ed estrazione da stringa .... sono disperato ....

Salve a tutti
( Premessa: se chiedo troppo e qualcuno è disposto a svilupparmi queste
funzioni ci possimo accordare per un compenso, ma vorrei imparare
qualcosa e non solo fare l'utilizzatore "stupido")
Sono disperato e sto pensando di mollare tutto: non riesco a combinare
un cavolo con access97 ...
Problema: inserire nel modo più agevole possibile dei tempi nel formato
hh:mm:ss.dc e fare dei calcoli con essi.
Dettagli:    i tempi devono essere salvati con la punteggiatura, per
motivi successivi di visualizzazione
                devo fare dei semplici calcoli come somme, sottrazioni
(anche attraverso la mezzanotte), medie
                devo fare delle approssimazioni, quali troncamento,
matematico, eccesso e mostrare i risultati nel campo
Obiettivo: fare delle classifiche di gare sportive
io ho fatto così (non vi spedisco il db, xchè sui ng non si può ... e
poi mi vergogno della sua pochezza):
formato del tempo di tipo TESTO (io ho messo 12 nel numero dei
caratteri, per tenere la punteggiatura ed eventualmente i millesimi,
anche se non penso di usarli)
hh:mm:ss.dc
12:13:24.55
io l'ho gestito con il formato cella e le due funzioni VBA sotto
00\:00\:00,00;1;_    è il formato inserito nella tabella di base per il
campo Ora Arrivo, molto comodo per l'inserimento dei dati.
se faccio una interrogazione con la funzione Len(Ora Arrivo) mi
restituisce 8, anche se nel db il valore viene salvato con la
punteggiatura (da quello che capisco la punteggiatura viene mostrata, ma
non è parte del campo, che contiene in realtà solo le cifre).
le funzioni sono
StrtoTime2 converte la stringa in tempo in centesimi, funziona, ma ho
qualche dubbio sulla forma:
Function StrtoTime2(inptime)
'Formato di input 
h.mm.ss.cc
If Len(inptime) = 6 Then
    mm = Val(Left(inptime, 2))
    ss = Val(Mid(inptime, 4, 2))
    cc = Val(Right(inptime, 2))
    hh = 0
End If
If Len(inptime) = 8 Then
    hh = Val(Left(inptime, 2))
    mm = Val(Mid(inptime, 3, 2))
    ss = Val(Mid(inptime, 5, 2))
    cc = Val(Right(inptime, 2))
End If
StrtoTime2 = cc + (ss * 100) + (mm * 6000) + (hh * 360000)
End Function
-----------------------------------------------
nota: ho provato anche con la sintassi Select Case considerando
lunghezze da 3 a 8
per rendere il tutto il più flessibile possibile
------------------------------------------------
TimeToStr converte il tempo di nuovo in stringa, usando un formato
opportuno a seconda che le ore siano =0 o meno, ovvero
hh:mm:ss.dc se le ore sono diverse da zero
    mm:ss.dc se ho solo i minuti
Function TimeToStr(inptime)
hh = Int(inptime / 360000)
mm = Int((inptime Mod 360000) / 6000)
ss = Int(((inptime Mod 360000) Mod 6000) / 100)
cc = ((inptime Mod 360000) Mod 6000) Mod 100
If hh <> 0 Then
    TimeToStr = Format(hh, "0") & ":" & Format(mm, "00") & ":" &
Format(ss, "00") & "." & Format(cc, "00")
Else
    TimeToStr = Format(mm, "0") & ":" & Format(ss, "00") & "." &
Format(cc, "00")
End If
End Function
----------------------------------------------------------------------
nota: così facendo però mi salva nella stringa anche la punteggiatura
come carattere.
----------------------------------------------------------------------
E qui siamo al vero problema: provate a fare questo
campo "tempo1" con il formato sopra detto
campo "tempo2" con lo stesso formato
campo "settore1" con origine dati
=TimeToStr(StrtoTime2(tempo1)-StrtoTime2(tempo2))
campo "Lungh1" formato numero
campo "media" con origine dati =[Lungh1]/(StrtoTime2([settore1])/360000)
Provate a fare dei conti e vedrete che se la differenza da un tempo con
ore <>0 va tutto bene, altrimenti da medie tutte sue.
L'obiettivo è sviluppare delle funzioni VBA, che mi gestiscano il tutto
correttamente e che le più flessibili possibile
Le cose sono due:
1. ho cannato tutto e qualcuno mi indica la corretta via
2. sono sulla strada giusta, ma per ignoranza (da ignoro, non conosco)
sono piantato ed ho comunque bisogno di un aiuto
Mi rivolgo quindi all'unico posto, che ritengo possa darmi un aiuto
Vi prego, non snobbate la mia richiesta ....
Marcello Gabrielli
mch...@yahoo.com
0347/7699271
p.s. risolto il problema mi impegno a postare il tutto su ng/sito comune
perchè penso possa essere utile a qualcuno
--
Posted from 
mta22-acc.tin.it
 [212.216.176.75] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

sono piantato ed ho comunque bisogno di un aiuto
A me sembra che la strada sia corretta anche se il modo di trattare le
stringhe non è omogeneo e per questo probabilmente hai quei problemi di
media.
Ciao Nicola