Oracle Apex - 下载 CSV 生成空报告
Oracle Apex - Download CSV produces an empty report
我目前在计算机上的 Internet Explorer 上使用 Oracle Apex 版本 18.2.0.00.12 运行ning Windows 10.
我在将交互式网格下载为 CSV 文件时遇到问题。
在我的 Apex 页面上,我有一个交互式网格和三个页面项目。页面项目中的两个 P200_DATE_FROM 和 P200_DATE_TO 是日期选择器项目。另一项是名为 "Submit" 的按钮,它的操作是 "Submit Page".
这是我的交互式网格的查询:
select * from kat_test
where repairdate between :P200_DATE_FROM and :P200_DATE_TO;
交互式网格中有四列:
问题 - Varchar2
月 - 数
星期 - 数字
维修日期 - 日期
我在交互式网格中更改的唯一设置是标题和 SQL 查询。
我将 P200_DATE_FROM 的来源更改为 PL/SQL 表示 returns 本月第一天的表达式。它被设置为使用 "Only when the current value in session state is null"。表达式为:
trunc(last_day(sysdate)-1, 'mm')
我更改了 P200_DATE_TO PL/SQL 表达式的来源 returns 当前日期。它也被设置为使用"Only when the current value in session state is null"。表达式为:
sysdate
当我 运行 页面时,它完全按照预期加载,即 P200_DATE_FROM 页面项目填充了当前月份的第一个日期,P200_DATE_TO 项目用当前日期填充,交互式网格显示正确的数据。
问题:当我 select 操作 -> 下载 -> CSV 时,CSV 文件下载并作为 Excel 文件打开,但仅显示 header 名称。 header 下方的单元格全部为空。但是,如果我更改 P200_DATE_FROM 页面项目 and/or 和 P200_DATE_TO 页面项目中的一个日期(或两者),然后按下提交按钮,页面将被提交,然后当我单击操作 -> 下载 -> CSV,Excel 文件打开,所有数据都完美显示(header 列和 header 下的数据)。
我不明白为什么当我最初加载页面时,交互式网格的 CSV 文件没有正确下载,但在我单击提交按钮后 CSV 文件却正确下载。
有没有人有什么想法?
提前致谢。
报告的查询可能包含如下所示的 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;有什么改进吗?
我认为您只需要将这些项目的名称放在 SQL 旁边的字段 "Items to submit" 中。下载时,我认为它使用会话中项目的值重新处理 SQL。如果你不把那些项目放在那里,值就不会进入会话。输入以逗号分隔的项目名称。之后,我认为您的 SQL
中有必要进行任何更改
我目前在计算机上的 Internet Explorer 上使用 Oracle Apex 版本 18.2.0.00.12 运行ning Windows 10.
我在将交互式网格下载为 CSV 文件时遇到问题。
在我的 Apex 页面上,我有一个交互式网格和三个页面项目。页面项目中的两个 P200_DATE_FROM 和 P200_DATE_TO 是日期选择器项目。另一项是名为 "Submit" 的按钮,它的操作是 "Submit Page".
这是我的交互式网格的查询:
select * from kat_test
where repairdate between :P200_DATE_FROM and :P200_DATE_TO;
交互式网格中有四列:
问题 - Varchar2
月 - 数
星期 - 数字
维修日期 - 日期
我在交互式网格中更改的唯一设置是标题和 SQL 查询。
我将 P200_DATE_FROM 的来源更改为 PL/SQL 表示 returns 本月第一天的表达式。它被设置为使用 "Only when the current value in session state is null"。表达式为:
trunc(last_day(sysdate)-1, 'mm')
我更改了 P200_DATE_TO PL/SQL 表达式的来源 returns 当前日期。它也被设置为使用"Only when the current value in session state is null"。表达式为:
sysdate
当我 运行 页面时,它完全按照预期加载,即 P200_DATE_FROM 页面项目填充了当前月份的第一个日期,P200_DATE_TO 项目用当前日期填充,交互式网格显示正确的数据。
问题:当我 select 操作 -> 下载 -> CSV 时,CSV 文件下载并作为 Excel 文件打开,但仅显示 header 名称。 header 下方的单元格全部为空。但是,如果我更改 P200_DATE_FROM 页面项目 and/or 和 P200_DATE_TO 页面项目中的一个日期(或两者),然后按下提交按钮,页面将被提交,然后当我单击操作 -> 下载 -> CSV,Excel 文件打开,所有数据都完美显示(header 列和 header 下的数据)。
我不明白为什么当我最初加载页面时,交互式网格的 CSV 文件没有正确下载,但在我单击提交按钮后 CSV 文件却正确下载。
有没有人有什么想法?
提前致谢。
报告的查询可能包含如下所示的 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;有什么改进吗?
我认为您只需要将这些项目的名称放在 SQL 旁边的字段 "Items to submit" 中。下载时,我认为它使用会话中项目的值重新处理 SQL。如果你不把那些项目放在那里,值就不会进入会话。输入以逗号分隔的项目名称。之后,我认为您的 SQL
中有必要进行任何更改