Crystal Reports v14未找到所有空值

时间:2014-03-04 19:09:57

标签: sql crystal-reports

好吧,我之前遇到过这种情况,并且过去已经完成了所有工作。我有一个创建的SQL代码,现在需要转换为水晶报表。 SQL显示956行,但Crystal只显示886行 这是SQL代码:

SELECT 
I4240,
I4201,
I4202,
I4203,
I4204,
I4206,
I4213,
I4214,
I4225,
I4208,
I4299 
FROM 
    MT.INVENTORY
WHERE
(
    I4202 IN ('UNKNONWN','VERIFY MFR','OTHER','VARIOUS','TBD','NA','N/A') OR
    (
        I4203 IN ('UNKNONWN','VERIFY MODEL NUMBER','OTHER','VARIOUS','TBD','NA','N/A','MISCELLANEOUS') 
        OR I4203 IS NULL 
        OR LENGTH(I4203)=0
    ) OR
    (
        I4204 IN ('UNKNOWN DESCRIPTION','VERIFY DESCRIPTION','OTHER','VARIOUS','TBD','NONE - NO STD USED','NA','N/A','MISCELLANEOUS') 
        OR I4204 IS NULL 
        OR LENGTH(I4204)=0
    ) 
) AND
I4240 NOT IN ('MT','STD','NESD')

ORDER BY I4240,I4202,I4203,I4204

和CR的记录选择公式:

(
    {Inventory.I4240} <> 'mt' and
    {Inventory.I4240} <> 'std' and
    {Inventory.I4240} <> 'nesd'
) 
AND
(
    (
        {Inventory.I4202} = 'UNKNONWN' OR
        {Inventory.I4202} = 'VERIFY MFR' OR
        {Inventory.I4202} = 'OTHER' OR
        {Inventory.I4202} = 'VARIOUS' OR
        {Inventory.I4202} = 'TBD' OR
        {Inventory.I4202} = 'NA' OR
        {Inventory.I4202} = 'N/A'
    )
    OR
    (
        {Inventory.I4203} = 'UNKNONWN' OR
        {Inventory.I4203} = 'VERIFY MODEL NUMBER' OR
        {Inventory.I4203} = 'OTHER' OR
        {Inventory.I4203} = 'VARIOUS' OR
        {Inventory.I4203} = 'TBD' OR
        {Inventory.I4203} = 'NA' OR
        {Inventory.I4203} = 'N/A' OR
        {Inventory.I4203} = 'MISCELLANEOUS' OR
        ISNULL({Inventory.I4203}) OR
        LENGTH(trim({Inventory.I4203})) < 1 OR
        INSTR(trim({Inventory.I4203}), "") = 0 OR
        TRIM({Inventory.I4203}) = ""
    )
    OR
    (
        {Inventory.I4204} = 'UNKNOWN DESCRIPTION' OR
        {Inventory.I4204} = 'VERIFY DESCRIPTION' OR
        {Inventory.I4204} = 'OTHER' OR
        {Inventory.I4204} = 'VARIOUS' OR
        {Inventory.I4204} = 'TBD' OR
        {Inventory.I4204} = 'NONE - NO STD USED' OR
        {Inventory.I4204} = 'NA' OR
        {Inventory.I4204} = 'N/A' OR
        {Inventory.I4204} = 'MISCELLANEOUS' OR
        ISNULL({Inventory.I4204}) OR
        LENGTH(trim({Inventory.I4204})) < 1 OR
        INSTR({Inventory.I4204}, "") = 0 OR
        TRIM({Inventory.I4204}) = ""
    )
)

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

在Crystal中,如果某个特定字段可以为null,那么您需要检查该条件作为您使用它的第一个事项,否则整个公式将出错并且不会评估任何内容

因此,在您的情况下,字段I4203和I4204至少需要将isnull()检查移至各自部分的顶部。如果I4240和I4202可以为null,那么您也应该处理这些条件。

另外,你有几个引用“UNKNONWN”这个词;这是一个错字吗?

答案 1 :(得分:0)

问题是报告选项设置为默认使用null,但由于某些原因,在记录选择公式中,它被设置为异常。一旦设置为默认设置,它就没有任何问题,并且计数是正确的。