mercoledì 22 aprile 2015

crystal report sum field string

Se vogliamo fare la somma di un campo che sul database è impostato come string,  dobbiamo seguire una particolare procedura.

Il primo step, o meglio passaggio è quello di trasformare il campo string in numero, per questo dobbiamo creare un campo formula.

Dalla finestra esplora campo, facciamo click sulla voce di menu "Campi Formula" e si crea un campo (es. Totale o importo ). (figura 1)
Figura 1


A questo punto si crea la funzione che trasformi il campo in numerico, tasto destro sul nome del campo e click sulla voce "Modifica".
Nella finestra delle formule scriviamo la seguente formula


if not isnull({NomeTabella.Campo}) then
     ToNumber({NomeTabella.Campo})
else
0

In questo modo se non è null tramite la funzione ToNumber trasforma il valore in numero, altrimenti restituisce 0.

Salviamo il tutto.

Nella sezione di raggruppamento facciamo click con il tasto destro e nella voce di menu, selezioniamo la voce "Inserisci" e poi riepilogo.
A questo punto nella finestra che viene aperta, selezioniamo come campo quello della formula (Totale) mentre come formula quello relativo alla Somma (figura 2).
Figura 2

A questo punto nel report avremmo un campo di tipo formula, su un campo di testo trasformato in numerico.

2 commenti:

Pierluigi ha detto...

Ciao come sempre ti faccio i complimenti per i tuoi articoli
che spaziano dai diversi linguaggi di programmazione a strumenti di reportistica come crystal reports.
Se posso permettermi ti riporto come con la sintassi basic
anni fa avevo fatto la formula a mio parere per
chi utilizza vb e Crystal più flessibile in quanto alla formula
puoi aggiungere ulteriori operazioni per modificare il dato

dim nNumero as double
dim nCoefficiente as double

nCoefficiente = 1.05
if not isnull({NomeCampoTesto}) then
nNumero=ToNumber({NomeCampoTesto})
else
nNumero=0
end if
formula = nNumero * nCoefficiente

Emanuele ha detto...

Ottimo spunto.
Grazie per aver condiviso il frammento di codice.