【问题标题】:Oracle Apex Refreshing Chart is not workingOracle Apex 刷新图表不起作用
【发布时间】:2018-11-16 15:33:51
【问题描述】:

我在我的 apex 应用程序中创建了一个对话框页面。在此页面上,用户可以为图表选择多个过滤器。单击按钮后,用户被重定向到上一页,并且包含图表的区域被刷新。我遇到的问题是设置过滤器不起作用。被重定向到上一页后,图表会不断刷新,直到出现错误提示:Bad Gateway。所以我看不到图表的任何结果。是不是我的图表查询太复杂了?对话框页面包含四项shuttle type,这里是我图表的查询。

select COUNT(TRIGGER_TABLE.DATUM_UHRZEIT) as Anzahl_Trigger,
   TEST.ID as ID
from BRIDGE_SYSTEM_TRIGGER, SYSTEM_TABLE, TRIGGER_TABLE, FAHRT, TEST, MITARBEITER
where BRIDGE_SYSTEM_TRIGGER.SYSTEM_TABLE_SYSTEM_ID = SYSTEM_TABLE.SYSTEM_ID
      and BRIDGE_SYSTEM_TRIGGER.TRIGGER_TABLE_TRIGGER_ID = TRIGGER_TABLE.TRIGGER_ID
      and TRIGGER_TABLE.FAHRT_FAHRT_ID = FAHRT.FAHRT_ID
      and MITARBEITER.QNUMMER = FAHRT.MITARBEITER_QNUMMER
      and FAHRT.TEST_ID = TEST_ID
      and TRIGGER_TABLE.PRIORITAET = 0
      or ((instr(':' || upper(:P26_Tests) || ':', upper(Test.Test_ID)) > 0)
      or (instr(':' || upper(:P26_UEBERSYSTEM) || ':',':' || upper(system_table.system_name) ||':') > 0) or (instr(':' || upper(:P26_UNTERSYSTEM) || ':',':' || upper(system_table.system_name) ||':') > 0)
      or (instr(':' || upper(:P26_COUNTRIES) || ':', upper(FAHRT.LAND)) > 0)
      or (instr(':' || upper(:P26_REF) || ':', upper(Test.REF)) > 0)
      or (instr(':' || upper(:P26_DRIVER) || ':', upper(MITARBEITER.QNUMMER)) > 0))
GROUP BY TEST.ID
ORDER BY TEST_ID;

查询不会引发任何错误。我想到的另一个问题是刷新的东西没有正确定义或不起作用。

【问题讨论】:

  • 将您的页面置于调试模式,并在调试日志中找到此查询。您可能会看到失败的原因。
  • 你的设置是什么?坏网关通常来自负载均衡器或 httpd 前端
  • @KrisRice 设置是什么意思?我在哪里可以找到它?
  • 询问您的管理员是谁。

标签: sql oracle-apex


【解决方案1】:

我可以解决我的问题!刷新没有错误。虽然我无法证明为什么没有加载刷新,但我认为这是一个运行时问题,因为查询太复杂了。

我将查询的最后五个 or 条件更改为 and-clauses。之后,刷新再次起作用。

select COUNT(TRIGGER_TABLE.DATUM_UHRZEIT) as Anzahl_Trigger,
TEST.ID as ID
from BRIDGE_SYSTEM_TRIGGER, SYSTEM_TABLE, TRIGGER_TABLE, FAHRT, TEST, MITARBEITER
where BRIDGE_SYSTEM_TRIGGER.SYSTEM_TABLE_SYSTEM_ID = SYSTEM_TABLE.SYSTEM_ID
      and BRIDGE_SYSTEM_TRIGGER.TRIGGER_TABLE_TRIGGER_ID = TRIGGER_TABLE.TRIGGER_ID
      and TRIGGER_TABLE.FAHRT_FAHRT_ID = FAHRT.FAHRT_ID
      and MITARBEITER.QNUMMER = FAHRT.MITARBEITER_QNUMMER
      and FAHRT.TEST_ID = TEST_ID
      and TRIGGER_TABLE.PRIORITAET = 0
      and ((instr(':' || upper(:P26_Tests) || ':', upper(Test.Test_ID)) > 0)
      and (instr(':' || upper(:P26_UEBERSYSTEM) || ':',':' || upper(system_table.system_name) ||':') > 0) or (instr(':' || upper(:P26_UNTERSYSTEM) || ':',':' || upper(system_table.system_name) ||':') > 0)
      and (instr(':' || upper(:P26_COUNTRIES) || ':', upper(FAHRT.LAND)) > 0)
      and (instr(':' || upper(:P26_REF) || ':', upper(Test.REF)) > 0)
      and (instr(':' || upper(:P26_DRIVER) || ':', upper(MITARBEITER.QNUMMER)) > 0))
GROUP BY TEST.ID
ORDER BY TEST_ID;

查询肯定看起来像这样,因为我想过滤,这就是我需要 and 条件的原因。每个元素都必须为真,否则会出现错误的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多