Hallo Liebes Forum,
ich habe seit kurzem Probleme mit einem Report und finde einfach den Grund nicht. Und zwar bricht der Aufruf des Reports nach ca. 2 Minuten aufgrund des Session-Timeouts des Browsers ab. Es handelt sich bei den Report um eine monatliche Anwesenheitsliste.
Hier mal das Script zum einfügen des Personals in den Bericht:
Und hier das Script zum einfügen des Anwesenheitskategorie pro Tag und Mitarbeiter:
Das zweite Script wird pro Anwesenheitsliste 30 bzw. 31 mal abgerufen, sprich für jeden Tag wird die entsprechende Kategorie dem Tag und dem Mitarbeiter zugeordnet.
Jetzt zu meiner Frage:
Sieht jemand evtl. Optimierungsmöglichkeiten zur Verbesserung der Performance beim Aufruf des Scriptes?
Bin für jeden Tipp dankbar!!!
MFG
T-Arendt
ich habe seit kurzem Probleme mit einem Report und finde einfach den Grund nicht. Und zwar bricht der Aufruf des Reports nach ca. 2 Minuten aufgrund des Session-Timeouts des Browsers ab. Es handelt sich bei den Report um eine monatliche Anwesenheitsliste.
Hier mal das Script zum einfügen des Personals in den Bericht:
Code:
select distinct
e.str_name_einrichtung Einrichtung,
m.str_mitarbeiter Mitarbeiter,
m.str_personalnummer Personal_Nr,
(select distinct case when ma.str_bemerkung_ma is null then '' else ma.str_bemerkung_ma||', ' end from t_alp_ma ma left outer join t_alp aa on aa.lid = ma.fklid
where ma.str_personalnummer = m.str_personalnummer
and aa.REF_EINRICHTUNG = a.REF_EINRICHTUNG
and aa.str_datum_mo_jahr in ('01.'||$P{Monat}||'.'||$P{Jahr},'02.'||$P{Monat}||'.'||$P{Jahr},'03.'||$P{Monat}||'.'||$P{Jahr},'04.'||$P{Monat}||'.'||$P{Jahr},'05.'||$P{Monat}||'.'||$P{Jahr},'06.'||$P{Monat}||'.'||$P{Jahr},'07.'||$P{Monat}||'.'||$P{Jahr}))||
(select distinct case when ma.str_bemerkung_ma is null then '' else ma.str_bemerkung_ma||', ' end from t_alp_ma ma left outer join t_alp aa on aa.lid = ma.fklid
where ma.str_personalnummer = m.str_personalnummer
and aa.REF_EINRICHTUNG = a.REF_EINRICHTUNG
and aa.str_datum_mo_jahr in ('08.'||$P{Monat}||'.'||$P{Jahr},'09.'||$P{Monat}||'.'||$P{Jahr},'10.'||$P{Monat}||'.'||$P{Jahr},'11.'||$P{Monat}||'.'||$P{Jahr},'12.'||$P{Monat}||'.'||$P{Jahr},'13.'||$P{Monat}||'.'||$P{Jahr},'14.'||$P{Monat}||'.'||$P{Jahr}))||
(select distinct case when ma.str_bemerkung_ma is null then '' else ma.str_bemerkung_ma||', ' end from t_alp_ma ma left outer join t_alp aa on aa.lid = ma.fklid
where ma.str_personalnummer = m.str_personalnummer
and aa.REF_EINRICHTUNG = a.REF_EINRICHTUNG
and aa.str_datum_mo_jahr in ('15.'||$P{Monat}||'.'||$P{Jahr},'16.'||$P{Monat}||'.'||$P{Jahr},'17.'||$P{Monat}||'.'||$P{Jahr},'18.'||$P{Monat}||'.'||$P{Jahr},'19.'||$P{Monat}||'.'||$P{Jahr},'20.'||$P{Monat}||'.'||$P{Jahr},'21.'||$P{Monat}||'.'||$P{Jahr}))||
(select distinct case when ma.str_bemerkung_ma is null then '' else ma.str_bemerkung_ma||', ' end from t_alp_ma ma left outer join t_alp aa on aa.lid = ma.fklid
where ma.str_personalnummer = m.str_personalnummer
and aa.REF_EINRICHTUNG = a.REF_EINRICHTUNG
and aa.str_datum_mo_jahr in ('22.'||$P{Monat}||'.'||$P{Jahr},'23.'||$P{Monat}||'.'||$P{Jahr},'24.'||$P{Monat}||'.'||$P{Jahr},'25.'||$P{Monat}||'.'||$P{Jahr},'26.'||$P{Monat}||'.'||$P{Jahr},'27.'||$P{Monat}||'.'||$P{Jahr},'28.'||$P{Monat}||'.'||$P{Jahr}))||
(select distinct case when ma.str_bemerkung_ma is null then '' else ma.str_bemerkung_ma||', ' end from t_alp_ma ma left outer join t_alp aa on aa.lid = ma.fklid
where ma.str_personalnummer = m.str_personalnummer
and aa.REF_EINRICHTUNG = a.REF_EINRICHTUNG
and aa.str_datum_mo_jahr in ('29.'||$P{Monat}||'.'||$P{Jahr},'30.'||$P{Monat}||'.'||$P{Jahr},'31.'||$P{Monat}||'.'||$P{Jahr})) Bemerkung
from
t_alp_ma m
left outer join t_alp a on m.fklid = a.lid
left outer join t_einrichtungen e on e.lid = a.REF_EINRICHTUNG
where
((substr(str_datum_di_jahr,4,2) = $P{Monat} and substr(str_datum_di_jahr,7,4) = $P{Jahr}) or
(substr(str_datum_mi_jahr,4,2) = $P{Monat} and substr(str_datum_mi_jahr,7,4) = $P{Jahr}) or
(substr(str_datum_do_jahr,4,2) = $P{Monat} and substr(str_datum_do_jahr,7,4) = $P{Jahr}) or
(substr(str_datum_fr_jahr,4,2) = $P{Monat} and substr(str_datum_fr_jahr,7,4) = $P{Jahr}) or
(substr(str_datum_sa_jahr,4,2) = $P{Monat} and substr(str_datum_sa_jahr,7,4) = $P{Jahr}) or
(substr(str_datum_mo_jahr,4,2) = $P{Monat} and substr(str_datum_mo_jahr,7,4) = $P{Jahr})) and
case when exists (select ein.lid from t_einrichtungen ein where a.REF_EINRICHTUNG = ein.lid) then e.str_user end like $P{Einrichtung}
order by
Einrichtung, Mitarbeiter
Und hier das Script zum einfügen des Anwesenheitskategorie pro Tag und Mitarbeiter:
Code:
select
ak.str_kurzbezeichnung Anwesenheitskategorie
from
t_alp_ma m
left outer join t_alp a on a.lid = m.fklid
left outer join t_einrichtungen e on e.lid = a.REF_EINRICHTUNG
left outer join KAT_anwesenheitskategorie ak on
(case when a.str_datum_di_jahr = $P{Datum} then m.REF_DI
when a.str_datum_mi_jahr = $P{Datum} then m.REF_MI
when a.str_datum_do_jahr = $P{Datum} then m.REF_DO
when a.str_datum_fr_jahr = $P{Datum} then m.REF_FR
when a.str_datum_sa_jahr = $P{Datum} then m.REF_SA
when a.str_datum_mo_jahr = $P{Datum} then m.REF_MO else null
end = ak.lid)
where
((str_datum_di_jahr = $P{Datum}) or
(str_datum_mi_jahr = $P{Datum}) or
(str_datum_do_jahr = $P{Datum}) or
(str_datum_fr_jahr = $P{Datum}) or
(str_datum_sa_jahr = $P{Datum}) or
(str_datum_mo_jahr = $P{Datum})) and
case when exists (select ein.lid from t_einrichtungen ein where ein.lid = a.REF_EINRICHTUNG) then e.str_user end like $P{Kita} and
str_personalnummer = $P{Personalnummer}
Das zweite Script wird pro Anwesenheitsliste 30 bzw. 31 mal abgerufen, sprich für jeden Tag wird die entsprechende Kategorie dem Tag und dem Mitarbeiter zugeordnet.
Jetzt zu meiner Frage:
Sieht jemand evtl. Optimierungsmöglichkeiten zur Verbesserung der Performance beim Aufruf des Scriptes?
Bin für jeden Tipp dankbar!!!
MFG
T-Arendt
Habe soeben die veränderten Scripte ausgeführt und getestet, leider ohne gewünschten Erfolg! Jedes Script für sich, wird im SQL-Developer recht schnell ausgeführt (unter einer Sekunde), jedoch wird das Script im Report-Programm eingefügt, dauert es ewig! Das Problem ist anscheinend, dass das Programm (iReport), warum auch immer, jetzt nicht mehr mit den 30 bzw. 31 Subreports klarkommt, so dass der Aufruf des Berichts ca. 5-6 min. dauert!