SQL 由 Crystal 生成的查询 Reports 在 SSMS 中有效,但在 Crystal 中没有提取任何记录

SQL query generated by Crystal Reports works in SSMS but pulls no records in Crystal

正如标题所说,我构建了一个 Crystal 报告以从 SQL 服务器中提取数据。 Crystal Reports 生成的 SQL 查询在复制到 SSMS 时按预期拉取数据,但当报告为 Crystal Reports 的 运行 时不拉取任何记录。

我的记录选择:

({PRECEIPTD.CREDAT_0} >= {?startDate} AND {PRECEIPTD.CREDAT_0} <= {?endDate}) 
AND ISNULL({PINVOICED.NUM_0}) 
AND IF ISNULL({?bpr}) OR {?bpr} = "" THEN {PORDERQ.BPSNUM_0} = {PORDERQ.BPSNUM_0} ELSE {PORDERQ.BPSNUM_0} = {?bpr}

我也试过这样写选择,它会提取所有相同的记录:

({PRECEIPTD.CREDAT_0} >= {?startDate} AND {PRECEIPTD.CREDAT_0} <= {?endDate})
AND ISNULL({PINVOICED.NUM_0})
AND IF ISNULL({?bpr}) OR {?bpr} = "" THEN {PORDERQ.BPSNUM_0} LIKE "*" ELSE {PORDERQ.BPSNUM_0} = {?bpr}

我正在使用 Crystal Reports 2013 SP11,通过 ODBC 连接访问数据库。

编辑: SQL 查询 Crystal 生成:

SELECT 
    PRECEIPTD.CREDAT_0
    , PORDERQ.BPSNUM_0
    , PORDERQ.POHNUM_0
    , PORDERQ.ITMREF_0
    , PORDERQ.QTYPUU_0
    , PORDERP.NETPRI_0
    , PRECEIPTD.PTHNUM_0
    , PINVOICED.NUM_0
FROM ((x3v6.PROD.PORDERQ PORDERQ 
INNER JOIN x3v6.PROD.PORDERP PORDERP ON 
    (PORDERQ.POHNUM_0=PORDERP.POHNUM_0) 
    AND (PORDERQ.POPLIN_0=PORDERP.POPLIN_0)) 
LEFT OUTER JOIN x3v6.PROD.PRECEIPTD PRECEIPTD ON 
    ((PORDERQ.POPLIN_0=PRECEIPTD.POPLIN_0) 
    AND (PORDERQ.POQSEQ_0=PRECEIPTD.POQSEQ_0)) 
    AND (PORDERQ.POHNUM_0=PRECEIPTD.POHNUM_0)) 
LEFT OUTER JOIN x3v6.PROD.PINVOICED PINVOICED ON 
    (PRECEIPTD.PTHNUM_0=PINVOICED.PTHNUM_0) 
    AND (PRECEIPTD.PTDLIN_0=PINVOICED.PTDLIN_0)
WHERE
    (PRECEIPTD.CREDAT_0>={ts '2018-01-01 00:00:00'} AND PRECEIPTD.CREDAT_0<{ts '2019-01-01 00:00:00'}) 
    AND PINVOICED.NUM_0 IS NULL 
    AND PORDERQ.BPSNUM_0=PORDERQ.BPSNUM_0
ORDER BY 
    PORDERQ.BPSNUM_0
    , PRECEIPTD.CREDAT_0

四处搜索了一下,在 找到了一个类似的 post。我的记录选择的 AND ISNULL({PINVOICED.NUM_0}) 部分抛出了 Crystal 报告。我将其更改为 AND ToText({PINVOICED.NUM_0}) = "",报告返回的正是我期望看到的内容。