2009-01-14 9 views
2

J'ai un champ Agréger dans un ensemble de données client et j'utilise une fonction pour obtenir la valeur agrégée, si l'ensemble de données client est vide, la fonction doit retour 0.Quelle est la différence entre TAggregateField.IsNull et (TAggregateField.Value = Null)

si je fais ceci:

if MyClientDataSet.AggregateField.IsNull then 
    Result := 0 
else 
    Result := MyClientDataSet.AggregateField.Value; 

lorsque l'ensemble de données client est vide la partie else est exécutée et déclencher une exception (ne peut pas convertir la variante d'une erreur de monnaie).

Mais si je le fais de cette façon

if MyClientDataSet.AggregateField.Value = Null then 
    Result := 0 
else 
    Result := MyClientDataSet.AggregateField.Value; 

il fonctionne très bien! Donc ma question est: Quelle est la différence entre la propriété IsNull et la comparaison de la propriété Value avec la valeur Null, dans un TAggregateField?

Répondre

3

Lorsque vous n'avez aucun enregistrement (jeu de données vide) vous n'avez pas de champ pour lequel la valeur serait nulle (lecture à partir du tampon d'enregistrement), donc la fonction IsNull du champ retourne false.
Dans l'autre cas, vous vérifiez que vous avez une variante nulle qui correspond à ce que l'ensemble de données renvoie dans GetAggregateValue.

+0

J'ai un TClientDataset avec un enregistrement que TAgregate.IsNull retourne False même si la seule valeur d'enregistrement est Null – EMBarbosa

Questions connexes