Condividi tramite


Campi e valori Null (sintassi Basic)

In generale, quando Crystal Reports rileva un campo con valore nullo in una formula, arresta immediatamente la valutazione della formula e non genera alcun valore. Se si desidera includere nella formula i valori dei campi NULL, è necessario specificarne esplicitamente l’inclusione utilizzando una delle funzioni speciali, sviluppate per la gestione dei campi NULL: IsNull, PreviousIsNull o NextIsNull.

Per quanto riguarda gli operatori, quando Crystal Reports valuta la condizione:

IsNull({Prodotto.Colore}) Or _
InStr({Prodotto.Colore}, " ") = 0

valuta in primo luogo l'espressione IsNull ({Prodotto.Colore)) e, una volta determinato che il valore è True, considera l'intera condizione come True e non deve verificare l'espressione

InStr({Prodotto.Colore}, " ") = 0

In altre parole, Crystal Reports non valuta ulteriormente un'espressione booleana quando può dedurre i risultati dall'intera espressione. Nell’esempio seguente, la formula impedisce i tentativi di divisione per zero nei casi in cui il denominatore è 0:

Dim num As Number, denom As Number
...
If denom <> 0 And num / denom > 5 Then
...

Nota   Visual Basic non supporta questa procedura, in quanto prevede la valutazione di tutte le parti di un'espressione booleana, anche quando non è necessario.

Esempio

Il campo {Prodotto.Colore} contiene sia i colori fondamentali, ad esempio il "rosso" e il "nero", sia colori di fantasia composti da due parole, ad esempio "grigio ferro" e "verde acqua". Supporre di scrivere una formula che inserisca la parola "fondamentale" per i colori fondamentali e la parola "fantasia" per gli altri colori.

If InStr({Prodotto.Colore}, " ") = 0 Then
    formula = "fondamentale"
Else
    formula = "fantasia"
End If

La chiamata di funzione InStr ricerca uno spazio nella stringa {Prodotto.Colore}. Se viene trovato uno spazio, ne restituisce la posizione, altrimenti restituisce il valore 0. Poiché i colori fondamentali sono composti da una sola parola senza spazi, la funzione InStr restituirà il valore 0.

Per alcuni prodotti, ad esempio il lucchetto a catena Guardian, non è stato registrato un valore colore; pertanto, il campo {Prodotto.Colore} contiene un valore null nel database in corrispondenza di quel record. Accanto al record Lucchetto a catena Guardian non viene stampata quindi alcuna dicitura.

Di seguito viene indicato come correggere l’esempio precedente utilizzando la funzione IsNull:

If IsNull({Prodotto.Colore}) Or _
   InStr({Prodotto.Colore}, " ") = 0 Then
   formula = "fondamentale"
Else
   formula = "fantasia"
End If

Vedere anche

Operatori | Editor delle formule