comment vérifier si une valeur null dans une seule ligne

J'obtiens une valeur de db, et lorsque la valeur est NULL j'obtiens une erreur

N'a pas pu convertir la variante de type (null) type (Entier)

Si je remplir dans la db avec 0 au lieu de rien (NULL) l'erreur disparaît

Donc, dis-je avoir cette

  OneSpell.PerCent     :=              FQuery.Recordset.Fields[ DB_FLD_PER_CENT    ].Value;
  OneSpell.Plus        := TCardPlus  ( FQuery.Recordset.Fields[ DB_FLD_PLUS        ].Value );
  OneSpell.Quantity    :=              FQuery.Recordset.Fields[ DB_FLD_QUANTITY    ].Value;

est-il un moyen de dire si la valeur est NULL puis le faire 0? Ou est-ce que avez à faire via la db.

FQuery est un adoquery et db est l'accès

Je sais que je pourrais faire

if  .... = null then 
  onespell.plus := 0 
else
   .........

Mais je veux le faire en une seule ligne pour chaque valeur de onespell

Qu'est-ce que OneSpell? De quel type sont PerCent, Plus, et Quantity? Est FQuery un TADOQuery, ou quelque chose d'autre? Pouvez-vous être un peu plus spécifique, de sorte que nous pouvons essayer de vous aider? (Et oui, si vous voulez 0 au lieu de NULL, la solution la plus simple pour réduire le code est de le faire en SQL lui-même à l'aide de IsNull() ou Coalesce() ou quelque soit l'équivalent quelle que soit la non spécifié système de base de données que vous utilisez, car alors le code de votre application n'a pas besoin de s'inquiéter à propos de ce qui est retourné, il sait que ça sera une valeur numérique valide.)
eh bien, il était difficile d'expliquer ce qu'est exactement onespell est, mais le type de pour cent, et plus de la quantité doit être un entier. la base de données est énorme et va jeté, et en mettant tous 0 serait prendre un certain temps. et si ses null l'%, plus la quantité n'est pas utilisé donc j'ai pensé 0 à compresser l'erreur. J'ai été hopeing un moyen d'ajouter une instruction if dans une ligne quelque chose comme cela oneSpell.plus := if(null)then 0 else .... mais pensé qu'il y avait une façon de le faire oui ses un adoquery , à l'aide de access db. mais plutôt de le faire dans ces lignes de code si possable...une fois une énorme db..
Une fois de plus, qu'est-ce que FQuery? Est-il un TADOQuery? (Il fait une différence, parce que ce qui est disponible pour une utilisation varie selon la classe. Aussi, si c'est un TADOQuery, il y a vraiment plusieurs jeux d'enregistrements? Si pas, il n'y a pas besoin d'utiliser FQuery.RecordSet, ce qui la rend plus facile.)
désolé je l'ai ajouté au dernier commentaire, mais le problème après l'avoir lu, mais oui FQuery est un TADOQuery, et oui, il y a plusieurs jeux d'enregistrements. comme dans le code, vous pouvez le faire plus rapidement avec une ? et de les garder tous dans la même ligne
Je n'ai aucune idée de comment vous pouvez l'éviter, parce que vous n'avez pas expliqué pourquoi votre requête a plusieurs jeux d'enregistrements dans la première place. La plupart des requêtes SQL ne pas retourner plus d'un, sauf si vous utilisez un TADOCommand au lieu d'exécuter une série de SELECT déclarations dans un script. (Je suis en supposant que vous êtes conscient que plusieurs jeux d'enregistrements ne sont pas les mêmes que plusieurs dossiers (lignes).)

OriginalL'auteur Glen Morse | 2014-01-11