Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Oracle APEX-根据包含的值有条件地更改交互式报表单元格中的文本颜色?_Date_Process_Oracle Apex - Fatal编程技术网

Date Oracle APEX-根据包含的值有条件地更改交互式报表单元格中的文本颜色?

Date Oracle APEX-根据包含的值有条件地更改交互式报表单元格中的文本颜色?,date,process,oracle-apex,Date,Process,Oracle Apex,好的。。。所以我在APEX中有一个交互式报告,它显示了系统中文档的数据。我们的文件应该每两年审查一次,表格中有一列包含下次审查文件的日期。我们希望在包含日期的单元格或行中的另一个单元格中直观地指示日期何时达到某些基准(即日期在当前日期的6个月内、3个月内、2个月内、1个月内等) 我希望能做的是根据某个单元格的值或同一行中另一个单元格的值来更改特定单元格的文本(或背景)的颜色。需要有一个进程或函数来执行一些计算,以确定sysdate和单元格中包含的日期之间的跨度。。。它不一定需要计算页面何时被加载

好的。。。所以我在APEX中有一个交互式报告,它显示了系统中文档的数据。我们的文件应该每两年审查一次,表格中有一列包含下次审查文件的日期。我们希望在包含日期的单元格或行中的另一个单元格中直观地指示日期何时达到某些基准(即日期在当前日期的6个月内、3个月内、2个月内、1个月内等)

我希望能做的是根据某个单元格的值或同一行中另一个单元格的值来更改特定单元格的文本(或背景)的颜色。需要有一个进程或函数来执行一些计算,以确定sysdate和单元格中包含的日期之间的跨度。。。它不一定需要计算页面何时被加载,但每天或每周的过程或其他事情都会很好


是否可以设置每天执行的流程或触发器,而无需人工交互?我还需要使用相同的功能来发送关于这些即将到来的截止日期的提醒电子邮件。(也就是说,当一份文件离需要审核的时间还有6个月时,将在3个月、2个月、1个月等时间发送一封电子邮件。)

例如,emp上的hiredate:我将为>11000的单元格着色。(sysdate hiredate的范围约为10k到12k)。您可以使用在查询中计算的字段,也可以使用通过某些过程填写的字段,这无关紧要:)

您将需要两个动态操作来为报表中的行着色:一个onload操作和一个after刷新。如果跳过“刷新后”,由于部分页面刷新,例如分页后,行将不会着色

动态操作一:刷新区域后:

真正的行动:

$("td[headers='TO_COLOUR_OR_NOT']").each(function(){
alert($(this).text());
   if(parseInt($(this).text()) > 11000){
      $(this).css({"background-color":"red"});
   };
});

使用一列作为条件为另一列着色的示例。始终小心你的测试内容和测试目的!例如,hiredate列是一个日期,请确保在必要时将其视为日期!进一步警告:如果您的日期格式设置为DD-MON-YYYY,那么您必须将月份映射到数字(JAN=1,DEC=12)!也许可以选择更改此列的日期格式,甚至

$("td[headers='HIREDATE']").each(function(){
   var i_date = $(this).text();
   //date format = MM/DD/YYYY
   //be carefull with date formats. 
   //in my case, i know my date format and know it won't change
   //my code is far from a complete parse of possible date values!
   var dMonth = i_date.substring(0, 2),
       dDay = i_date.substring(3, 5),
       dYear = i_date.substring(6);    
   var d = new Date(dYear, dMonth, dDay, 0, 0, 0, 0);

   if(d.getFullYear() <= 1981){
      //we are looping over TD elements. I want to colour the 
      //column ENAME in red when the condition is true for this row.
      //so, $(this) = TD element we loop with. parent = TR element,
      //then back to the children of the row
      $(this).parent().children("td[headers='ENAME']").css({"background-color":"red"});
   };
});
$(“td[headers='HIREDATE'])。每个(函数(){
var i_date=$(this).text();
//日期格式=MM/DD/YYYY
//注意日期格式。
//就我而言,我知道我的日期格式,并且知道它不会改变
//我的代码远没有完全解析可能的日期值!
var dMonth=i_日期子字符串(0,2),
dDay=i_日期子串(3,5),
dYear=i_日期子串(6);
变量d=新日期(日期、月份、日期、0、0、0);

如果(d.getFullYear()在交互式报告中,您还可以定义报告(带有突出显示),这将为您提供帮助

选择按钮操作,然后格式化(在弹出窗口中)并突出显示

在HighLight中,您可以指定名称、类型(行或单元格)、背景和文本颜色,以及要在其中添加运算符和表达式的列。 应用高光(当需要多个颜色高光时,根据您的表达式制作多个高光/其他名称)。 与最重要的过滤器一起,然后将其另存为报告(第一个主过滤器)

定义主报告后,您可以将其作为基础报告。使用其他过滤器制作一些其他报告(并保存),但与主报告具有相同的突出显示)


玩得开心。

如果我正在尝试编辑我正在检查值的行(即,我可以将行的颜色设置为“彩色”或“不彩色”),那么这项功能非常有用但是,如果我想检查该行的值,然后根据该值为另一行着色,比如hiredate,我该怎么做呢?我在回答中添加了一些代码来帮助您,注释不够大:)正如我在这里所说的:小心日期!而且,使用经典报告也可能有用,因为你可以在那里有隐藏的列,并且仍然以它们为目标(这在IR中是不可能的)通过这种方式,您可以在select中执行一些逻辑,并将其输出到一个隐藏列,并消除javascript中的值检查-这可能是转换值时的一个难题,通常是为了获得非常小的结果(您将/能够重用代码多少次?值得付出努力吗?等等)啊…你是对的。如果源列被隐藏,它就不起作用。这是非常不幸的。是否可以像我们在'hiredate'和sysdate之间的select语句中所做的那样进行类似的计算,但作为动态操作启动的javascript表达式的一部分?因此动态操作将在hiredate上,并且它将计算计算两个日期之间的差异,然后给相应的单元格上色?当然,但要确保使用js中的日期变量来进行算术运算
$("td[headers='HIREDATE']").each(function(){
   var i_date = $(this).text();
   //date format = MM/DD/YYYY
   //be carefull with date formats. 
   //in my case, i know my date format and know it won't change
   //my code is far from a complete parse of possible date values!
   var dMonth = i_date.substring(0, 2),
       dDay = i_date.substring(3, 5),
       dYear = i_date.substring(6);    
   var d = new Date(dYear, dMonth, dDay, 0, 0, 0, 0);

   if(d.getFullYear() <= 1981){
      //we are looping over TD elements. I want to colour the 
      //column ENAME in red when the condition is true for this row.
      //so, $(this) = TD element we loop with. parent = TR element,
      //then back to the children of the row
      $(this).parent().children("td[headers='ENAME']").css({"background-color":"red"});
   };
});