Oracle Apex刷新图表不起作用

时间:2018-11-13 07:27:20

标签: sql oracle-apex

我已经在apex应用程序中创建了一个对话框页面。在此页面上,用户可以为图表选择几个过滤器。单击按钮后,用户将重定向到上一页,并且刷新包含图表的区域。我的问题是设置过滤器不起作用。重定向到上一页后,图表将无休止地刷新,直到出现错误:错误的网关。因此,我看不到图表的任何结果。我的图表查询是否可能太复杂?对话框页面包含航天飞机类型的四项,这是我的图表的查询。

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;

查询不会引发任何错误。我想到的另一个问题是刷新定义不正确或无法正常工作。

1 个答案:

答案 0 :(得分:0)

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

我将查询的最后五个或条件更改为从句。这样做之后,刷新将再次起作用。

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条件的原因。每个元素必须为真,否则将出现错误结果。