Condividi:        

Conversione ore da formato sessantesimale a centesimale

Discussioni e opinioni costruttive sul mondo dell'informatica.
Per la soluzione di problemi specifici fare riferimento alle sezioni di assistenza!

Moderatori: aurelio37, Anthony47, axelrox

Conversione ore da formato sessantesimale a centesimale

Postdi raffaele_71 » 09/09/04 19:14

Un saluto a tutti, :neutral:
Ipotizzo che possa essere banale, ma mi sono bloccato... a volte capita.
Gestisco una tabella con una query che mi permette di filtrare alcune cose, ho un campo ORA che è cosi' formattato (ex : 04:30:00 ... e a volte SOLO LA PARTE DEI MINUTI ... ex : 30:00 ).
Esiste una funzione in Access che converte in qualche modo ... in centesimale ( ex : 4.50 ) ... il valore?
Ho già cercato di splittare ... il valore di partenza... con LEFT$ RIGHT$ ... etc etc.... e non volevo , se possibile scrivere pezzi di codice.

Un saluto a tutti ed un GRAZIE in anticipo.
raffaele_71
Newbie
 
Post: 3
Iscritto il: 09/09/04 19:06

Sponsor
 

Postdi zello » 09/09/04 23:23

io splitterei il valore e scriverei due rghe di codice (dividi per 60, riporti all'unità successiva).
In C una cosa del tipo (lo farei in vb, ma non ho windows a portata di mano - comunque si dovrebbe capire)
Codice: Seleziona tutto
#include <stdio.h>
 
double convert(int hours, int min, int secs)
{
        return (((double)secs/60)+min)/60+hours;
}
 
int main()
{
        double d=convert(10,30,30);
        printf("%f\n",d);
        return 0;
}
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44

Postdi raffaele_71 » 10/09/04 06:59

beh diciamo.... che piu' o meno ho capito... anche se ... non so se sia fattibile... al 100% .....
cmq ... forse la strada potrebbe essere solo questa......? :cry:
saluti a tutti


zello ha scritto:io splitterei il valore e scriverei due rghe di codice (dividi per 60, riporti all'unità successiva).
In C una cosa del tipo (lo farei in vb, ma non ho windows a portata di mano - comunque si dovrebbe capire)
Codice: Seleziona tutto
#include <stdio.h>
 
double convert(int hours, int min, int secs)
{
        return (((double)secs/60)+min)/60+hours;
}
 
int main()
{
        double d=convert(10,30,30);
        printf("%f\n",d);
        return 0;
}
raffaele_71
Newbie
 
Post: 3
Iscritto il: 09/09/04 19:06

Re: Conversione ore da formato sessantesimale a centesimale

Postdi cassioli » 11/09/04 15:06

raffaele_71 ha scritto:Un saluto a tutti, :neutral:
Ipotizzo che possa essere banale, ma mi sono bloccato... a volte capita.
Gestisco una tabella con una query che mi permette di filtrare alcune cose, ho un campo ORA che è cosi' formattato (ex : 04:30:00 ... e a volte SOLO LA PARTE DEI MINUTI ... ex : 30:00 ).
Esiste una funzione in Access che converte in qualche modo ... in centesimale ( ex : 4.50 ) ... il valore?
Ho già cercato di splittare ... il valore di partenza... con LEFT$ RIGHT$ ... etc etc.... e non volevo , se possibile scrivere pezzi di codice.

Boh, non so niente di come in acess si possa far comparire in un campo il risultato dell'elaborazione di altri campi... tuttavia, supponendo che sia possibile, si dovrebbe fare, in BASIC (piu' comprensibile del C! :) ):
Codice: Seleziona tutto
h$ = mid$(orario$,1,2)        //  h$ = "04"
m$= mid$(orario$,3,2)        //m$ = "30"
CentMin = val(m$)*100/60   // CentMin = 30*100/60 = 50
CentStrin$= h$+"."+str$(cent)  // CentStrin$ = "04.50"
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

Postdi piercing » 11/09/04 16:28

Che tipo di dato è il campo Ora?

e non per farmi i fatti tuoi... ma perchè devi fare questa operazione?
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi raffaele_71 » 11/09/04 17:33

E' un campo, accidenti a me... stringa, e di 9 caratteri ...( pazzi coloro che l'hanno creato in sto modo...) ... quindi non mi trovavo per nulla.. tentando... inutilmente di utilizzare... HOUR oppure MINUTE ... solo che quando non era valorizzatoil campo ora ex: 30:00 ( 30 minuti ) mi dava errore... cosi' tramite l'ultima indicazione... mi si è accesa una lampadina, come sempre accade quando si guardano le cose da soli...
ecco quanto fatto e funzionante :

Private Sub OK_Click()


Dim ORE As Integer
Dim ORE2 As String
Dim MINUTI As Integer
Dim SECONDI As Integer

Dim CENTESIMI As Variant

ORE2 = Mid$(TOPEA, 4, 1)

If ORE2 <> ":" Then

ORE = 0

Else

ORE = Hour(Me.TOPEA.Value)

End If

MINUTI = Mid$(TOPEA, 5, 2)

CENTESIMI = Int(MINUTI * 100 / 60)

ORECENTESIMALI.Value = ORE & "," & CENTESIMI


End Sub

ADESSO UNA DOMANDA, come dico io sempre magari un po' sciocca, per poter far si di creare un output... da questa maschera che ho creato ( appositamente per controllare quaeste ore...e con un option box ( si/no) confermo o meno la validità di quello che vedo)...che idee vi balzano in mente ?

HO PROVATO UTILIZZANDO OUTPUT SU ... mediante macro ...( chiaramente che passerà per una query... dove indico cio' che mi interessa.. )
che ne pensate?
un saluto ancora e grazie per le idee ;) ;)
Raffaele

piercing ha scritto:Che tipo di dato è il campo Ora?

e non per farmi i fatti tuoi... ma perchè devi fare questa operazione?
raffaele_71
Newbie
 
Post: 3
Iscritto il: 09/09/04 19:06


Torna a Discussioni


Topic correlati a "Conversione ore da formato sessantesimale a centesimale":


Chi c’è in linea

Visitano il forum: Nessuno e 24 ospiti