我当前正在运行Windows 10的计算机上的Internet Explorer上使用Oracle Apex版本18.2.0.00.12。
我将交互式表格下载为CSV文件时遇到问题。
在我的Apex页面上,我有一个交互式网格和三个页面项目。页面选择项中的两个页面项P200_DATE_FROM和P200_DATE_TO。另一个项目是一个名为“提交”的按钮,其动作是“提交页面”。
这是我的交互式网格的查询:
select * from kat_test
where repairdate between :P200_DATE_FROM and :P200_DATE_TO;
交互式网格中有四列:
问题-Varchar2
月份-数字
周-数字
修复日期-日期
我在“交互式网格”中更改的唯一设置是标题和SQL查询。
我将P200_DATE_FROM的源更改为PL / SQL表达式,该表达式返回了当前月份的第一天。设置为“仅在会话状态下的当前值为空时使用”。表达式是:
trunc(last_day(sysdate)-1, 'mm')
我更改了返回当前日期的P200_DATE_TO PL / SQL表达式的来源。还设置为“仅在会话状态下的当前值为空时使用”。表达式是:
sysdate
当我运行该页面时,它的加载完全符合预期,即P200_DATE_FROM页面项已填充当月的第一天,P200_DATE_TO项目已填充了当前日期,并且交互式网格显示正确的数据。
问题:当我选择“操作”->“下载”->“ CSV”时,该CSV文件将下载并以Excel文件形式打开,但仅显示标题名称。标头下面的单元格都是空的。但是,如果我更改了P200_DATE_FROM页面项目和/或P200_DATE_TO页面项目中的一个(或两个)日期,然后按了提交按钮,则该页面被提交,然后当我单击操作->下载-> CSV时, Excel文件打开,所有数据都完美显示(列标题和标题下面的数据)。
我不明白为什么最初加载页面时,Interactive Grid的CSV文件无法正确下载,但是单击提交按钮后,CSV文件却可以正确下载。
有人有什么想法吗?
谢谢。
答案 0 :(得分:3)
我认为您只需要在SQL旁边的“要提交的项目”字段中输入这些项目的名称即可。下载时,我认为它会使用会话中项目的值重新处理SQL。如果您不将这些项目放在此处,则值不会进入会话。输入项目名称,以逗号分隔。之后,我认为您的SQL需要进行任何更改
答案 1 :(得分:2)
报表的查询可能包含一个WHERE
子句,如下所示:
where some_date between :P200_DATE_FROM and :P200_DATE_TO
对其进行修改,使其包含NVL
函数,该函数的第二个参数反映项目的默认值,即
where some_date between nvl(:P200_DATE_FROM, trunc(last_day(sysdate)-1, 'mm'))
and nvl(:P200_DATE_TO, sysdate)
运行页面,下载CSV;有什么改善吗?