Crystal Reports为Oracle视图中的某些字段显示空白(null)值

时间:2017-09-15 13:47:47

标签: oracle view crystal-reports

摘要

我们有一个引用单个Oracle视图的Crystal Report。报告中没有其他表或联接。视图由多个选择,连接和其他数据转换组成(例如,sum,case,to_date,group by)。

视图中的四列在报告中显示为空白(null)。这些相同的列在Oracle SQL Developer中正确显示,并通过在C#应用程序中使用Oracle Data Provider for .NET进行选择。所有其他列在报告中正确显示。

此外,“浏览字段”选项不会显示受影响字段的值,但会显示相同类型的未受影响字段的选项。同样,如果我创建一个受影响的字段,则报告的参数不会显示任何选项。

我们验证了在所有情况下,我们都在Crystal Reports,Oracle SQL Developer和Web应用程序中作为相同的只读用户进行连接。

分辨率尝试失败

  1. 我们删除并替换了Crystal Report中的视图和字段。
  2. 我们创建了一个连接到同一视图的全新报告。
  3. 我们在同一报告中创建了一个新视图(来自同一个SQL)
  4. 我们通过Crystal Reports验证了数据库
  5. 我们从

    转换了隐式日期转换
    fetch("http://httpstat.us/500")
        .then(function(response) {
            if (!response.ok) {
                throw Error(response.statusText);
            }
        })
    

    score_month = '01-SEP-2017'
    

    per https://stackoverflow.com/a/37729175/19977

  6. 其他奇怪

    1. 将数据从视图导出到表有效,但我们想要使用视图
    2. 我们不知道这个问题的原因是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

需要对该视图进行多次修改才能解决此问题。

  1. 我们按https://stackoverflow.com/a/37729175/19977删除了Oracle特定的sql。例如:

    -- replace
    TRUNC(sysdate, 'MONTH') AS score_month`
    -- with
    TO_DATE('01-SEP-2017', 'dd-MON-yyyy')
    
    -- and replace
    where score_month = '01-SEP-2017'
    -- with
    where score_month = TO_DATE('01-SEP-2017', 'dd-MON-yyyy')
    
  2. 使用架构和表名完全限定Oracle视图中使用的所有表和视图。例如:

    -- replace
    FROM table t
    -- with
    FROM our_schema.table t
    
  3. 仍然不清楚为什么视图可以通过Oracle SQL Developer和应用程序通过Oracle Data Provider for .NET而不是Crystal Reports中的预期工作。欢迎进一步了解这个问题。