2009-10-02 3 views
1

{} AR_Customer.CustomerType est un champ de 4 caractèresCrystal Reports comparer ne fonctionne pas sans garniture

{} AR_Customer.CustomerType <> « S » ne retourne pas tous les enregistrements où cela est vrai, sauf si je le fais ce façon: trim ({AR_Customer.CustomerType}) <> "S"

Dans la base de données actuelle, les champs NULL sont ceux qui me manquent.

Alors cela me dit que NULL est le même que « S » - Je ne pense pas, mais voilà comment Crystal réagissait sans garniture()

Y at-il une règle générale ici que je dois comprendre?

+0

Quelle base de données utilisez-vous? Est-ce que "S" est stocké comme "S" (avec 3 espaces après)? – Chris

+0

La propriété 'Convertir les valeurs NULL de la base de données par défaut' est-elle activée pour le rapport (Fichier | Options de rapport ...) ou le poste de travail (Fichier | Options ...)? – craig

Répondre

0

La colonne de la base de données pourrait être une "largeur fixe" de 4 caractères, si cela est vrai alors {AR_Customer.CustomerType}<>"S " serait une alternative à trim({AR_Customer.CustomerType})<>"S" qui woks parce qu'il supprime l'espace blanc du champ.

La valeur NULL est NON égal à «S» ou à une valeur quelconque. En fait, dans SQL, vous ne pouvez pas utiliser il symbole égal pour NULL, au lieu, vous devez utiliser ces conditions particulières:

IS NULL 
IS NOT NULL 

Dans la base de données, en utilisant SQL, une requête pour obtenir toutes les lignes avec AR_Customer.CustomerType de « S » et NULL serait également:

where (AR_Customer.CustomerType = 'S ' or AR_Customer.CustomerType IS NULL) 
+0

Votre question est-elle résolue maintenant? Avez-vous encore des questions sur cette réponse? Pour accepter une réponse "[** Cliquez sur la coche **] (https://ibb.co/ikqyO6)" pour plus d'informations, consultez la rubrique [aide/acceptation] (https://stackoverflow.com/help/someone-answers). –