Formattare Ore, minuti, Secondi in Crystal..

venerdì 26 settembre 2008 - 14.20

Buffalo Profilo | Newbie

Buongiorno

Avrei la seguente necessità..
Passare da codice (uso Visual Studio 2005) a delle celle del crystal, dei dati numerici sotto forma di tempo.

Esempio
Nella query da codice arriva il valore 180.. Sarebbero i secondi.. Esiste un modo per formattare il formato della cella in modo che mi visualizzi "0 ore, 3 minuti, 0 secondi"? Tutto questo in virtù del fatto che dovrei sommare le celle contenenti questi valori con una sommatoria in un altra cella..

quindi:

"1 ora, 2 minuti, 10 secondi" + "0 ore, 5 minuti, 12 secondi" + "2 ore, 0 minuti, 0 secondi" = "3 ore, 7 minuti, 22 secondi"


Ora come ora formatto io da codice il valore dei secondi creando una stringa che assegno alla cella del crystal.. Però poi ovviamente le sommatorie non funzionano in quanto stringhe..
Quindi mi servirebbe convertire in qualche modo il valore in secondi direttamente nel crystal, per poi sommare tranquillamente.. Ovviamente però non mi basta visualizzare e sommare i secondi, in quanto l' utente non "vuole la fatica" di convertire a mente i secondi in relative Ore - Minuti - Secondi

Spero di essere stato chiaro

Grazie a tutti
Ciao
Simone

ale.orma Profilo | Junior Member

>Esempio
>Nella query da codice arriva il valore 180.. Sarebbero i secondi..
>Esiste un modo per formattare il formato della cella in modo
>che mi visualizzi "0 ore, 3 minuti, 0 secondi"? Tutto questo
>in virtù del fatto che dovrei sommare le celle contenenti questi
>valori con una sommatoria in un altra cella..
Crea una formula e nell'editor scrivi TimeSerial (0,0, @NumSecondi) dove @NumSecondi è una formula che contiene il numero di secondi da formattare in HH:MM:SS che tu passi da vb.
Nel tuo caso TimeSerial(0,0,180) in anteprima mostra 0.03.00
Spero ti sia d'aiuto ciao!

Buffalo Profilo | Newbie

Grazie per la risposta

Scusa l' ignoranza ma non ho ancura avuto l' onore di fare una formula con l' editor di crystal..

@NumSecondi come e dove lo dichiaro?? Devo fare un altra formula da crystal oppure lo dichiaro da codice?

Grazie mille
Simone

ale.orma Profilo | Junior Member

>Grazie per la risposta
Di niente

>@NumSecondi come e dove lo dichiaro?? Devo fare un altra formula
>da crystal oppure lo dichiaro da codice?
Si devi creare una formula da crystal nel tuo report, che poi andrai a valorizzare da codice VB con il numero di secondi che vuoi formattare.

Buffalo Profilo | Newbie

Ora proverò..

Però mi è venutra in mente una cosa più semplice se è possibile farla..

Io per riempire il report creo una tabella con N righe da visual che poi do al Crystal nel seguente modo:
mioreport.SetDataSource(Tabella)


Una colonna di questa tabella contiene i secondi di cui parlavo prima.. Attualmente trasformo io in una stringa da codice dividendo in ore, minuti, secondi..

Se invece lasciassi direttamente i secondi, esiste un modo da crystal per formattare in Ore,Minuti,Secondi senza usare le formule?? Perchè se no, in base al procedimento che mi hai scritto, dovrei fare in modo che la formula che creo si integri nella tabella che passo al report e non ho la più idea di come fare e per l' ennesima volta devo stare a spendere tempo su sto maledetto crystal..

Magari c'è un semplice tasto destro sull' oggetto o simili che mi permetta di formattare la cella.. Semplicemente.. Da codice passo 180 e impostando un Ora Minuti secondi mi fa vedere quello che voglio.. Semplice, senza le formule, senza capire tutti sti esperti, senza mettere formule nelle formula..
Alla fine mi servirebbe semplicemente formattare una cella.. Alla excel..

Non esiste nulla che faccia una cosa così semplice? Ma chi ha inventato Crystal doveva per forza far percorrere le strade più tortuose per fare 2 + 2??

Scusate lo sfogo, ma non mi piace proprio Crystal!!

Grazie a tutti
Simone

ale.orma Profilo | Junior Member

>Se invece lasciassi direttamente i secondi, esiste un modo da
>crystal per formattare in Ore,Minuti,Secondi senza usare le formule??
No, ma comunque la cosa è semplice. Mettiamo che la colonna della tua tabella che contiene i secondi si chiama TotSecondi. Devi solo creare una formula in cui formatti tale campo e inserirla nella sezione "Dettagli" del report.
Allora la procedura passo-passo è la seguente:
- crea una nuova formula con un nome a tuo piacimento
- all'interno dell'editor delle formule scrivi TimeSerial (0,0, TotSecondi) dove TotSecondi è il campo numerico della tua tabella che contiene i secondi.
- salva e chiudi l'editor delle formule
- dall'elenco formule selezioni quella che hai appena creato e la inserisci nella sezione dettagli.

Per il tempo totale puoi creare un'altra formula e scrivere nell'editor TimeSerial (0,0, sum(TotSecondi)) e posizionarla poi nella sezione "Piè di pagina report".

>Magari c'è un semplice tasto destro sull' oggetto o simili che mi permetta di formattare la cella.. Semplicemente..
Sì crystal di permette di formattare i campi facendo tasto dx e poi "Formato campo...", solo che in questo caso trattandosi di un campo numerico non offre in automatico la possibilità di formattarlo come tempo in hh:mm:ss, permette solo di specificare numero di decimali, separatore di decimali e migliaia, rappresentazione del numero negativo e così via...

Buffalo Profilo | Newbie

Innanzi tutto grazie..

Ho già provato ad inserire questa sintassi nella formula ma mi da errore..

Il nome colonna che ci metto è il nome della colonna della tabella che creo da query che è uguale a quello con cui creo il report (altrimenti non funzionerebbe)..

Andando ad inserire questa formula nel report (ignorando l' errore dell' editor formula quindi) in esecuzione mi da questo errore: E' previsto un numero, un importo in valuta etc.....

A me sembra di aver fatto quello che mi hai detto..

Formula..
Nell' editor ci metto la tua sintassi, ovviamente con il nome della mia colonna..

Errore..

Ciao
Simone

ale.orma Profilo | Junior Member

Strano io ho fatto una prova e a me funziona bene... L'errore che ti dà sembra dovuto al fatto che il campo della tua tabella contenente i secondi non è "visto" da crystal come numerico...
Prova a scrivere nella formula TimeSerial (0,0, cdbl(TotSecondi)) e vedi se così funziona...

Buffalo Profilo | Newbie

Ho appena finito..

Non gli bastava il nome della colonna, ma voleva tutta la genealogia del nome.. Ho risolto trascinando nella formula..

Comunque a mio avviso, che non è assolutamente nulla, è veramente allucinante il giro che ti fanno fare per delle cose di una banalità estrema!! sono senza parole..

Grazie mille per la tua disponibilità, mi sei stato di grande aiuto!!

ciao
Simone

Buffalo Profilo | Newbie

Buongiorno

riapro questa discussione per piccolo quesito..

La formula che ho creato è perfetta e stupenda (grazie mille!!), però vedo che il TimeSerial mi fa le somme fino a 23.59.59.. Cioè se ad esempio se la somma dei secondi di cui parlavo prima è di 25 ore la formula mi restituisce 1.00.00.. a me servirebbe che la funzione mi restituisca 25.00.00.. 25 ore..


come posso fare????

grazie mille e buona giornata!!!!!111
simone
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5