From 200805cb3f0502ab86e0610a545cedf94a99f67e Mon Sep 17 00:00:00 2001 From: Imo John <john@memtext.de> Date: Thu, 3 Apr 2025 14:00:45 +0200 Subject: [PATCH] JasperReport fuer Pruefungsergebnisse inkl Anpassungen Spaltenlayout; fm_templates-Eintrag fuer Spaltenverarbeitung --- .../module/rpta/masken/48110_felderinfo.unl | 2 + .../rpta/masken/48110_masken_felder_bez.unl | 1 + .../module/rpta/masken/48110_maskeninfo.unl | 109 +---- .../rpta/schluesseltabellen/fm_templates.unl | 114 ++++- .../macro_masken_bez_fuellen.sql | 2 +- ...exam_unit_dim_studiengang_note_fuellen.sql | 58 +++ ...ang_note_fuellen_MIN_MAX_SEMESTER_TEST.sql | 443 ++++++++++++++++++ .../sx_stylesheets_einfuegen.sql | 14 +- .../48110_leistungen_und_studiengaenge.jrxml | 414 ++++++++++++++++ 9 files changed, 1046 insertions(+), 111 deletions(-) create mode 100644 src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen_MIN_MAX_SEMESTER_TEST.sql mode change 100755 => 100644 src-modules/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql create mode 100644 superx/WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml diff --git a/src-modules/module/rpta/masken/48110_felderinfo.unl b/src-modules/module/rpta/masken/48110_felderinfo.unl index d52602c..32563c5 100644 --- a/src-modules/module/rpta/masken/48110_felderinfo.unl +++ b/src-modules/module/rpta/masken/48110_felderinfo.unl @@ -26,3 +26,5 @@ union select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht 48133^Spalten^3001^0^0^150^190^10^char^30^0^1^<<SQL>>\ select C.uniquename, C.caption ,L.layout_id from rpta_column C, rpta_column2layout L where C.tid=L.column_id and layout_id in\ (select tid from rpta_column_layout where uniquename=<<Spaltenlayout>>) order by 2;^ ^ ^ +48134^tablestylesheet^19^0^0^100^150^1^char^200^1^1^<<SQL>>\ +select distinct filename,X.caption from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=48110^hidden^<<SQL>>select distinct filename,X.caption from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=48110 and ord=1^ diff --git a/src-modules/module/rpta/masken/48110_masken_felder_bez.unl b/src-modules/module/rpta/masken/48110_masken_felder_bez.unl index 83c16dc..a64e9c6 100644 --- a/src-modules/module/rpta/masken/48110_masken_felder_bez.unl +++ b/src-modules/module/rpta/masken/48110_masken_felder_bez.unl @@ -13,3 +13,4 @@ 48110^48128^ 48110^48132^ 48110^48133^ +48110^48134^ diff --git a/src-modules/module/rpta/masken/48110_maskeninfo.unl b/src-modules/module/rpta/masken/48110_maskeninfo.unl index e9e9a00..b72f9c6 100644 --- a/src-modules/module/rpta/masken/48110_maskeninfo.unl +++ b/src-modules/module/rpta/masken/48110_maskeninfo.unl @@ -90,114 +90,7 @@ and ${filter}\ \ \ \ -select \ ---zuerst die Basisdaten:\ -<#foreach column in columns>\ -<#if column.coltype="physicalColumn">\ -${column.srcfieldname} as ${column.srcfieldname},\ -<#elseif column.coltype="logicalColumn">\ -${column.colfunction} as ${column.targetfieldname},\ -<#elseif column.coltype="lookupColumn">\ -(${column.colfunction}) as ${column.targetfieldname},\ -<#elseif column.coltype="computedColumn" || column.coltype=="processingColumn">\ -null::decimal(19,6) as ${column.targetfieldname},\ -</#if>\ -</#foreach>\ -null::char(1) as dummycol\ -into temp tmp_stud\ -from ${basetable.runtime_tablename}\ -<#if rpta_column_layout.whereclause !="">\ -where ${rpta_column_layout.whereclause}\ -</#if>\ -;\ -\ ---ergebnistabelle:\ -select \ ---zuerst die nicht-Aggregate:\ -<#assign groupby=0 />\ -<#foreach column in columns>\ --- logicalColumns ausgeschlossen, da sie von processingColumns aggregiert werden\ --- computedColumns immer mitnehmen, da später verarbeitet\ -<#if column.is_aggregate==0 && column.coltype!="logicalColumn" && column.coltype!="processingColumn" || column.coltype="computedColumn"> \ -<#assign groupby=groupby+1 />\ -${column.targetfieldname},\ -<#elseif column.is_aggregate==0 && column.coltype="processingColumn"> \ -<#assign groupby=groupby+1 />\ -${column.srcfieldname} as ${column.targetfieldname},\ -</#if>\ -</#foreach>\ ---dann die Aggregate:\ -<#foreach column in columns>\ --- logicalColumns ausgeschlossen, da sie von processingColumns aggregiert werden\ --- computedColumns ausgeschlossen, da später im finalen select verarbeitet\ -<#if column.is_aggregate==1 && column.coltype!="computedColumn" && column.coltype!="logicalColumn"> \ -${column.colfunction}(${column.srcfieldname}) as ${column.targetfieldname},\ -</#if>\ -</#foreach>\ -null::char(1) as dummycol\ -into temp tmp_stud2\ -from tmp_stud\ -where 1=1\ -/* ${<<Zusatzfilter>>} */\ -group by\ -<#list 1..groupby as i>${i}\ -<#if i != groupby>\ -,\ -</#if>\ -</#list>\ -;\ ---für Prozentwerte alle Aggregate summieren:\ -select <#foreach column in columns>\ -<#if column.is_aggregate==1 && column.coltype!="computedColumn" && column.coltype!="processingColumn">\ -sum(${column.targetfieldname})::float as ${column.targetfieldname},\ -</#if>\ -</#foreach>\ -null::char(1) as dummycol\ -into temp tmp_gesamt\ -from tmp_stud2\ -where 1=1\ -;\ -\ -<#assign number_of_visible_colums=0 />\ -<#foreach column in columns>\ -<#if column.is_visible!=0>\ -<#assign number_of_visible_colums=number_of_visible_colums+1 />\ -</#if>\ -</#foreach>\ -<#assign colnr=0 />\ -select \ -<#foreach column in columns>\ -<#if column.is_visible!=0>\ -<#assign colnr=colnr+1 />\ -<#assign format_sql="" />\ -<#if column.format_sql?string != "">\ -<#assign format_sql=column.format_sql />\ -</#if>\ -\ -<#if column.coltype=="computedColumn">\ -(${column.colfunction})${format_sql} as ${column.targetfieldname}\ -<#else>\ -${column.targetfieldname}${format_sql} as ${column.targetfieldname}\ -</#if>\ -\ -<#if colnr < number_of_visible_colums>,</#if>\ -</#if> --wenn sichtbar\ -</#foreach>\ -from tmp_stud2\ -order by <#list 1..number_of_visible_colums as i>${i}\ -<#if i != number_of_visible_colums>\ -,\ -</#if>\ -</#list>\ -;\ -<#if basetable.is_virtual==1>\ -drop table if exists ${basetable.runtime_tablename};\ -</#if>\ -\ -\ -drop table if exists tmp_stud;\ -drop table if exists tmp_stud2;\ -drop table if exists tmp_gesamt;\ +<@rpta_interpret_column_layout />\ \ \ </#if> --wenn columns?has_content^--Freemarker Template\ diff --git a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl index d4928ad..2583fa9 100644 --- a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl +++ b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl @@ -1,4 +1,4 @@ -84^RPTA-Makros^<#macro rpta_column_layout_fuellen>\ +91^RPTA-Makros^<#macro rpta_column_layout_fuellen>\ CREATE temp TABLE tmp_rpta_column\ (\ uniquename varchar(255) NOT NULL,\ @@ -220,4 +220,116 @@ and L.resultset_id=T.resultset_id\ drop table tmp_rpta_column;\ drop TABLE tmp_rpta_column_layout;\ drop TABLE tmp_rpta_column2layout;\ +</#macro>\ +\ +<#macro rpta_interpret_column_layout>\ + select \ + --zuerst die Basisdaten:\ + <#foreach column in columns>\ + <#if column.coltype="physicalColumn">\ + ${column.srcfieldname} as ${column.srcfieldname},\ + <#elseif column.coltype="logicalColumn">\ + ${column.colfunction} as ${column.targetfieldname},\ + <#elseif column.coltype="lookupColumn">\ + (${column.colfunction}) as ${column.targetfieldname},\ + <#elseif column.coltype="computedColumn" || column.coltype=="processingColumn">\ + null::decimal(19,6) as ${column.targetfieldname},\ + </#if>\ + </#foreach>\ + null::char(1) as dummycol\ + into temp tmp_stud\ + from ${basetable.runtime_tablename}\ + <#if rpta_column_layout.whereclause !="">\ + where ${rpta_column_layout.whereclause}\ + </#if>\ + ;\ + \ + --ergebnistabelle:\ + select \ + --zuerst die nicht-Aggregate:\ + <#assign groupby=0 />\ + <#foreach column in columns>\ + -- logicalColumns ausgeschlossen, da sie von processingColumns aggregiert werden\ + -- computedColumns immer mitnehmen, da später verarbeitet\ + <#if (column.is_aggregate==0 && column.coltype!="logicalColumn" && column.coltype!="processingColumn") || column.coltype="computedColumn"> \ + <#assign groupby=groupby+1 />\ + ${column.targetfieldname},\ + <#elseif column.is_aggregate==0 && column.coltype="processingColumn"> \ + <#assign groupby=groupby+1 />\ + ${column.srcfieldname} as ${column.targetfieldname},\ + </#if>\ + </#foreach>\ + --dann die Aggregate:\ + <#foreach column in columns>\ + -- logicalColumns ausgeschlossen, da sie von processingColumns aggregiert werden\ + -- computedColumns ausgeschlossen, da später im finalen select verarbeitet\ + <#if column.is_aggregate==1 && column.coltype!="computedColumn" && column.coltype!="logicalColumn"> \ + ${column.colfunction}(${column.srcfieldname}) as ${column.targetfieldname},\ + </#if>\ + </#foreach>\ + null::char(1) as dummycol\ + into temp tmp_stud2\ + from tmp_stud\ + where 1=1\ + group by\ + <#list 1..groupby as i>${i}\ + <#if i != groupby>\ + ,\ + </#if>\ + </#list>\ + ;\ + --für Prozentwerte alle Aggregate summieren:\ + select \ + <#foreach column in columns>\ + <#if column.is_aggregate==1 && column.coltype!="computedColumn" && column.coltype!="processingColumn">\ + sum(${column.targetfieldname})::float as ${column.targetfieldname},\ + </#if>\ + </#foreach>\ + null::char(1) as dummycol\ + into temp tmp_gesamt\ + from tmp_stud2\ + where 1=1\ + ;\ + \ + <#assign number_of_visible_colums=0 />\ + <#foreach column in columns>\ + <#if column.is_visible!=0>\ + <#assign number_of_visible_colums=number_of_visible_colums+1 />\ + </#if>\ + </#foreach>\ + <#assign colnr=0 />\ + select \ + <#foreach column in columns>\ + <#if column.is_visible!=0>\ + <#assign colnr=colnr+1 />\ + <#assign format_sql="" />\ + <#if column.format_sql?string != "">\ + <#assign format_sql=column.format_sql />\ + </#if>\ + \ + <#if column.coltype=="computedColumn">\ + (${column.colfunction})${format_sql} as ${column.targetfieldname}\ + <#else>\ + ${column.targetfieldname}${format_sql} as ${column.targetfieldname}\ + </#if>\ + \ + <#if colnr < number_of_visible_colums>,</#if>\ + </#if> --wenn sichtbar\ + </#foreach>\ + from tmp_stud2\ + order by \ + <#list 1..number_of_visible_colums as i>${i}\ + <#if i != number_of_visible_colums>\ + ,\ + </#if>\ + </#list>\ + ;\ + \ + <#if basetable.is_virtual==1>\ + drop table if exists ${basetable.runtime_tablename};\ + </#if>\ + drop table if exists tmp_stud;\ + drop table if exists tmp_stud2;\ + drop table if exists tmp_gesamt;\ + \ </#macro>^Makros zum Umgang mit Spaltenlayouts^^1^ diff --git a/src-modules/module/rpta/schluesseltabellen/macro_masken_bez_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/macro_masken_bez_fuellen.sql index 774084d..9aa71cd 100644 --- a/src-modules/module/rpta/schluesseltabellen/macro_masken_bez_fuellen.sql +++ b/src-modules/module/rpta/schluesseltabellen/macro_masken_bez_fuellen.sql @@ -32,7 +32,7 @@ CREATE TEMP TABLE tmp_macro_masken_bez ( maskeninfo_id2 integer NOT NULL, active integer DEFAULT 1 NOT NULL, sortnr smallint NOT NULL, - schleifenrelation character(255), + schleifenrelation text, schleifenfeldname character(255), alias character(255), schleifenfstand character(255), diff --git a/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen.sql index 354c265..03b2bc8 100644 --- a/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen.sql +++ b/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen.sql @@ -18,6 +18,64 @@ select uniquename from rpta_resultset where uniquename='rpta_exam_unit_dim_studi <#assign rpta_columns = [ +{"uniquename":"dim_studiengang_stg", +"srcfieldname":"dim_studiengang_stg", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Fach", +"is_visible":"1", +"is_aggregate":0, +"visible_size":10, +"description":""}, + +{"uniquename":"dim_studiengang_abschluss", +"srcfieldname":"dim_studiengang_abschluss", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Abschluss", +"is_visible":"1", +"is_aggregate":0, +"visible_size":10, +"description":""}, + + {"uniquename":"sem_der_pruefung", +"srcfieldname":"sem_der_pruefung", +"targetfieldname":"sem_der_pruefung", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Semester der Prüfung (Schlüssel)", +"is_visible":"1", +"is_aggregate":0, +"visible_size":5, +"description":""}, + +{"uniquename":"sem_der_pruefung_str", +"srcfieldname":"sem_der_pruefung", +"targetfieldname":"sem_der_pruefung_str", +"column_type":"logicalColumn", +"col_function":"(select eintrag from semester where tid=sem_der_pruefung)", +"format_code":"", +"caption":"Semester der Prüfung", +"is_visible":"0", +"is_aggregate":0, +"visible_size":10, +"description":""}, + + {"uniquename":"sem_der_pruefung_str_process", +"srcfieldname":"sem_der_pruefung_str", +"targetfieldname":"sem_der_pruefung_str_process", +"column_type":"processingColumn", +"col_function":"", +"format_code":"", +"caption":"Semester der Prüfung", +"is_visible":"1", +"is_aggregate":0, +"visible_size":5, +"description":""}, + {"uniquename":"elementnr", "srcfieldname":"elementnr", "column_type":"physicalColumn", diff --git a/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen_MIN_MAX_SEMESTER_TEST.sql b/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen_MIN_MAX_SEMESTER_TEST.sql new file mode 100644 index 0000000..4773958 --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/rptaColLay_rpta_exam_unit_dim_studiengang_note_fuellen_MIN_MAX_SEMESTER_TEST.sql @@ -0,0 +1,443 @@ +--freemarker template +<#include "RPTA-Makros"/> +<sqlvars> +<sqlvar name="rpta_exam_unit_dim_studiengang_exists"> +select count(*) from rpta_resultset where uniquename='rpta_exam_unit_dim_studiengang'; +</sqlvar> +<sqlvar name="rpta_resultset"> +select uniquename from rpta_resultset where uniquename='rpta_exam_unit_dim_studiengang'; +</sqlvar> +</sqlvars> +<#assign rpta_column_layouts = [{"uniquename":"rpta_exam_unit_dim_studiengang_note", +"caption":"Prüfungsergebnisse", +"rpta_resultset":"rpta_exam_unit_dim_studiengang", +"whereclause":"((modulart=''P'' and sourcesystem=6) or (part=''MP'' and sourcesystem=5))", +"description":"Prüfung und Noten" +}] + /> + +<#assign rpta_columns = [ + +{"uniquename":"dim_studiengang_stg", +"srcfieldname":"dim_studiengang_stg", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Fach", +"is_visible":"1", +"is_aggregate":0, +"visible_size":10, +"description":""}, + +{"uniquename":"dim_studiengang_abschluss", +"srcfieldname":"dim_studiengang_abschluss", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Abschluss", +"is_visible":"1", +"is_aggregate":0, +"visible_size":10, +"description":""}, + + {"uniquename":"sem_der_pruefung", +"srcfieldname":"sem_der_pruefung", +"targetfieldname":"sem_der_pruefung", +"column_type":"logicalColumn", +"col_function":"sem_der_pruefung", +"format_code":"", +"caption":"Semester der Prüfung", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5, +"description":""}, + + {"uniquename":"sem_der_pruefung_min_process", +"srcfieldname":"sem_der_pruefung", +"targetfieldname":"sem_der_pruefung_min_process", +"column_type":"processingColumn", +"col_function":"min", +"format_code":"", +"caption":"Semester der Prüfung (Min)", +"is_visible":"1", +"is_aggregate":1, +"visible_size":5, +"description":""}, + + {"uniquename":"sem_der_pruefung_max_process", +"srcfieldname":"sem_der_pruefung", +"targetfieldname":"sem_der_pruefung_max_process", +"column_type":"processingColumn", +"col_function":"max", +"format_code":"", +"caption":"Semester der Prüfung (Max)", +"is_visible":"1", +"is_aggregate":1, +"visible_size":5, +"description":""}, + +{"uniquename":"elementnr", +"srcfieldname":"elementnr", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"pnr", +"is_visible":"1", +"is_aggregate":0, +"visible_size":10, +"description":""}, + + {"uniquename":"pdtxt", +"srcfieldname":"pdtxt", +"column_type":"physicalColumn", +"col_function":"", +"format_code":"", +"caption":"Name der Prüfung", +"is_visible":"1", +"is_aggregate":0, +"visible_size":40, +"description":""}, + + {"uniquename":"summe", +"srcfieldname":"summe", +"column_type":"physicalColumn", +"col_function":"sum", +"format_code":"", +"caption":"Teilnehmer", +"is_visible":"1", +"is_aggregate":1, +"visible_size":15, +"description":""}, + + {"uniquename":"note_case", +"srcfieldname":"note", +"targetfieldname":"note_case", +"column_type":"logicalColumn", +"col_function":"(case when note > 6 then null else note end)", +"format_code":"", +"caption":"Durchschnittsnote % *", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5, +"description":""}, + + {"uniquename":"note_schnitt", +"srcfieldname":"note_case", +"targetfieldname":"note_schnitt", +"column_type":"processingColumn", +"col_function":"avg", +"format_code":"", +"caption":"Durchschnittsnote *", +"is_visible":"0", +"is_aggregate":1, +"visible_size":5, +"description":""}, + + {"uniquename":"note_schnitt_case", +"srcfieldname":"note_schnitt", +"targetfieldname":"note_schnitt_case", +"column_type":"computedColumn", +"col_function":"case when summe < 5 then null else note_schnitt end", +"format_code":"", +"caption":"Durchschnittsnote *", +"is_visible":"1", +"is_aggregate":1, +"visible_size":25, +"description":""}, + + {"uniquename":"pstatus_nb", +"srcfieldname":"pstatus", +"targetfieldname":"pstatus_nb", +"column_type":"logicalColumn", +"col_function":"(case when pstatus in (''NB'',''EN'') then 1 else 0 end)", +"format_code":"", +"caption":"Durchfallquote in % *", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5, +"description":""}, + + {"uniquename":"pstatus_nb_sum", +"srcfieldname":"pstatus_nb", +"targetfieldname":"pstatus_nb_sum", +"column_type":"processingColumn", +"col_function":"sum", +"format_code":"", +"caption":"Durchfallquote in % *", +"is_visible":"0", +"is_aggregate":1, +"visible_size":5, +"description":""}, + + {"uniquename":"pstatus_nb_quote", +"srcfieldname":"pstatus_nb_sum", +"targetfieldname":"pstatus_nb_quote", +"column_type":"computedColumn", +"col_function":"case when summe < 5 then null else pstatus_nb_sum/summe::decimal(18,2)*100 end", +"format_code":"DEC_2", +"caption":"Durchfallquote in % *", +"is_visible":"1", +"is_aggregate":1, +"visible_size":25, +"description":""}, + + {"uniquename":"pvermerk_ne", +"srcfieldname":"pvermerk", +"targetfieldname":"pvermerk_ne", +"column_type":"logicalColumn", +"col_function":"(case when pvermerk in (''NE'',''N'') then 1 else 0 end)", +"format_code":"", +"caption":"Nicht erschienen", +"is_visible":"0", +"is_aggregate":0, +"visible_size":5, +"description":""}, + + {"uniquename":"pvermerk_ne_sum", +"srcfieldname":"pvermerk_ne", +"targetfieldname":"pvermerk_ne_sum", +"column_type":"processingColumn", +"col_function":"sum", +"format_code":"INTEGER", +"caption":"Nicht erschienen", +"is_visible":"1", +"is_aggregate":1, +"visible_size":25, +"description":""} + + + ] /> + + + ---ab hier nicht mehr ändern: + +CREATE temp TABLE tmp_rpta_column +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + srcfieldname varchar(255), + targetfieldname varchar(255), + column_type integer, + col_function text, + is_visible smallint, + visible_size smallint, + is_aggregate smallint, + resultset_id integer, + sortnr integer, + description TEXT, + format_code_uniquename varchar(255), + format_code_id integer +); + +CREATE temp TABLE tmp_rpta_column_layout +( + uniquename varchar(255) NOT NULL, + caption varchar(255), + resultset_id integer, + whereclause text, + description text +); + + +<#foreach rpta_column_layout in rpta_column_layouts> + +insert into tmp_rpta_column_layout( +resultset_id, +uniquename, +caption, +whereclause, + description +) +select tid, +'${rpta_column_layout.uniquename}', +'${rpta_column_layout.caption}', +'${rpta_column_layout.whereclause}', +'${rpta_column_layout.description}' +FROM rpta_resultset +where uniquename='${rpta_column_layout.rpta_resultset}'; + +</#foreach > + +<#assign sortnr=0 /> +<#foreach column in rpta_columns> +<#assign sortnr=sortnr +1 /> + +INSERT INTO tmp_rpta_column +(resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_visible, + visible_size, + is_aggregate, + sortnr, + description, + format_code_uniquename + ) +select R.tid, +'${column.uniquename}', +'${column.caption}', +'${column.srcfieldname}', +<#if !column.targetfieldname?exists || column.targetfieldname=="">null::varchar <#else>'${column.targetfieldname}' </#if>, +T.tid as column_type, +<#if column.col_function?exists>'${column.col_function}'<#else>null::varchar </#if>, +${column.is_visible}, +${column.visible_size}, +${column.is_aggregate}, +${sortnr*10}, +<#if column.description?exists>'${column.description}'<#else>null::varchar </#if>, +<#if column.format_code?exists>'${column.format_code}'<#else>null::varchar </#if> +FROM rpta_resultset R, rpta_column_type T +where R.uniquename='${rpta_resultset}' +and T.uniquename='${column.column_type}'; + +</#foreach> + +update tmp_rpta_column set format_code_id=C.tid +from rpta_format_code C +where C.uniquename=tmp_rpta_column.format_code_uniquename +and format_code_uniquename is not null; + + +select * into temp tmp_rpta_column2layout +from rpta_column2layout +where layout_id in (select L.tid +from rpta_column_layout L,rpta_resultset R +where R.tid=L.resultset_id +and R.uniquename='${rpta_resultset}' +and L.uniquename in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +</#foreach>'xy') +) +; + +select * into temp tmp_rpta_column_layout_target +from rpta_column_layout +where resultset_id in (select tid +FROM rpta_resultset +where uniquename='${rpta_resultset}') +and uniquename in (select uniquename from tmp_rpta_column_layout) +; + +insert into rpta_column_layout +(uniquename, + caption, + resultset_id, + whereclause, + description) + select uniquename, + caption, + resultset_id, + whereclause, + description +FROM tmp_rpta_column_layout T +where 0=(select count(*) from tmp_rpta_column_layout_target T2 +where T.uniquename=T2.uniquename); + +drop table tmp_rpta_column_layout_target; + +delete from rpta_column2layout +where layout_id in (select L.tid +from rpta_column_layout L,rpta_resultset R +where R.tid=L.resultset_id +and R.uniquename='${rpta_resultset}' +and L.uniquename in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +</#foreach>'xy') +) +; + +select * into temp tmp_rpta_column2 +from tmp_rpta_column T +where (resultset_id,uniquename) not in +(select resultset_id,uniquename from rpta_column); + +INSERT INTO rpta_column +(resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + custom + ) + select +resultset_id, + uniquename, + caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description, + 0 as custom +from tmp_rpta_column2; + +--evtl. neuen Satz einfügen, dann alle updaten + +update rpta_column set ( caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description) + = (select caption, + srcfieldname, + targetfieldname, + column_type, + col_function, + is_aggregate, + description + from tmp_rpta_column T + where T.resultset_id=rpta_column.resultset_id + and T.uniquename=rpta_column.uniquename) + where custom=0 + and (resultset_id,uniquename) in +(select T.resultset_id,T.uniquename +from tmp_rpta_column T) +; + +drop table tmp_rpta_column2; + +insert into rpta_column2layout(column_id, + layout_id, + sortnr, + is_visible, + visible_size, + caption, + description, + format_code_id) +select C.tid as column_id, + L.tid as layout_id, + T.sortnr, + T.is_visible, + T.visible_size, + T.caption, + T.description, + T.format_code_id +FROM rpta_column C, rpta_column_layout L, tmp_rpta_column T +where C.uniquename=T.uniquename +and C.resultset_id=T.resultset_id +and L.uniquename in ( +<#foreach rpta_column_layout in rpta_column_layouts> +'${rpta_column_layout.uniquename}', +</#foreach>'xy') +and L.resultset_id=T.resultset_id + ; +drop table tmp_rpta_column; +drop table if exists tmp_rpta_column2; +drop TABLE tmp_rpta_column_layout; + + + + diff --git a/src-modules/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql b/src-modules/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql old mode 100755 new mode 100644 index 39e9362..b59a5c3 --- a/src-modules/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql +++ b/src-modules/module/rpta/schluesseltabellen/sx_stylesheets_einfuegen.sql @@ -4,7 +4,8 @@ <#assign masken = [ {"mask":"48140", "filename":"tabelle_html.xsl", "ord":"10"}, -{"mask":"48140", "filename":"tabelle_xls_48140.xsl", "ord":"1"} +{"mask":"48140", "filename":"tabelle_xls_48140.xsl", "ord":"1"}, +{"mask":"48110", "filename":"48110_leistungen_und_studiengaenge.jrxml", "ord":"1"} ] /> @@ -41,6 +42,17 @@ "usage_resultset_data":"T", "stylesheet_type":"XSL_XLSX", "jr_datasource":"" +}, +{"filename":"48110_leistungen_und_studiengaenge.jrxml", +"caption":"Prüfungsergebnisse (Excel)", +"description":"Studiengangsweise Ausgabe pro Reiter", +"relation":"table", +"contenttype":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", +"is_generic":"0", +"toolbar_icon_filepath":"", +"usage_resultset_data":"T", +"stylesheet_type":"JRXML", +"jr_datasource":"" } ] /> diff --git a/superx/WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml b/superx/WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml new file mode 100644 index 0000000..00cefb4 --- /dev/null +++ b/superx/WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml @@ -0,0 +1,414 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Created with Jaspersoft Studio version 6.21.3.final using JasperReports Library version 6.21.3-4a3078d20785ebe464f18037d738d12fc98c13cf --> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Leistungen und Studiengänge" language="groovy" pageWidth="842" pageHeight="5595" orientation="Landscape" columnWidth="818" leftMargin="12" rightMargin="12" topMargin="12" bottomMargin="12" uuid="d58082fe-8941-478b-b06e-8d7250737b92"> + <property name="net.sf.jasperreports.export.xls.create.custom.palette" value="true"/> + <property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/> + <property name="net.sf.jasperreports.export.xls.one.page.per.sheet" value="true"/> + <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/> + <property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows " value="true"/> + <property name="net.sf.jasperreports.print.create.bookmarks" value="true"/> + <property name="net.sf.jasperreports.export.xls.exclude.origin.band.1" value="pageHeader"/> + <property name="net.sf.jasperreports.export.xls.exclude.origin.band.2" value="pageFooter"/> + <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.1" value="pageHeader"/> + <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.2" value="pageFooter"/> + <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Prüfungsergebnisse"/> + <property name="com.jaspersoft.studio.unit." value="pixel"/> + <property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/> + <property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/> + <property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/> + <property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/> + <property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/> + <property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/> + <property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/> + <property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/> + <template><![CDATA["simple_table.jrtx"]]></template> + <style name="TableRowDetail" mode="Opaque" forecolor="#000000" backcolor="#FFFFFF" hTextAlign="Right" vTextAlign="Middle" isBlankWhenNull="true" fontName="Liberation Sans" fontSize="8" isBold="false"> + <box rightPadding="2"> + <pen lineColor="#000000"/> + <topPen lineWidth="0.5" lineColor="#030303"/> + <leftPen lineWidth="0.5" lineColor="#030303"/> + <bottomPen lineWidth="0.5" lineColor="#030303"/> + <rightPen lineWidth="0.5" lineColor="#030303"/> + </box> + <paragraph leftIndent="2" rightIndent="1" spacingBefore="0" spacingAfter="0"/> + <conditionalStyle> + <conditionExpression><![CDATA[Boolean.valueOf( $V{PAGE_COUNT} % 2 == 1 )]]></conditionExpression> + <style mode="Opaque" forecolor="#000000" backcolor="#E3E8EB"/> + </conditionalStyle> + </style> + <queryString language="xPath"> + <![CDATA[/ergebnisse/ergebnis/ergebniselement[@ordnr='0']/sqlerg/row]]> + </queryString> + <field name="REPORT_HEADING_INSTITUTION" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_INSTITUTION]]></fieldDescription> + </field> + <field name="REPORT_HEADING_URL" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_URL]]></fieldDescription> + </field> + <field name="REPORT_LOGO_FILE" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_LOGO_FILE]]></fieldDescription> + </field> + <field name="REPORT_HEADING_ADRESS" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_HEADING_ADRESS]]></fieldDescription> + </field> + <field name="REPORT_EMAIL" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_EMAIL]]></fieldDescription> + </field> + <field name="REPORT_DOCUMENTATION_URL" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/generalinfo/REPORT_DOCUMENTATION_URL]]></fieldDescription> + </field> + <field name="Berichtsname" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/maskenname]]></fieldDescription> + </field> + <field name="Erlaeuterung" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/explanation]]></fieldDescription> + </field> + <field name="Hinweis" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/hinweis]]></fieldDescription> + </field> + <field name="Fach" class="java.lang.String"> + <fieldDescription><![CDATA[col[@id="0" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Abschluss" class="java.lang.String"> + <fieldDescription><![CDATA[col[@id="1" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Semester der Prüfung (Schlüssel)" class="java.lang.Integer"> + <fieldDescription><![CDATA[col[@id="2" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Semester der Prüfung" class="java.lang.String"> + <fieldDescription><![CDATA[col[@id="3" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="pnr" class="java.lang.String"> + <fieldDescription><![CDATA[col[@id="4" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Name der Prüfung" class="java.lang.String"> + <fieldDescription><![CDATA[col[@id="5" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Teilnehmer" class="java.lang.Integer"> + <fieldDescription><![CDATA[col[@id="6" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Durchschnittsnote *" class="java.lang.Double"> + <fieldDescription><![CDATA[col[@id="7" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Durchfallquote in % *" class="java.lang.Double"> + <fieldDescription><![CDATA[col[@id="8" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="Nicht erschienen" class="java.lang.Integer"> + <fieldDescription><![CDATA[col[@id="9" and wert!=""]/wert]]></fieldDescription> + </field> + <field name="legende_Seit Semester_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Seit Semester"]/@varname]]></fieldDescription> + </field> + <field name="legende_Seit Semester_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Seit Semester"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Bis Semester_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Bis Semester"]/@varname]]></fieldDescription> + </field> + <field name="legende_Bis Semester_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Bis Semester"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Semestertyp_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Semestertyp"]/@varname]]></fieldDescription> + </field> + <field name="legende_Semestertyp_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Semestertyp"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Studiengang_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Studiengang"]/@varname]]></fieldDescription> + </field> + <field name="legende_Studiengang_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Studiengang"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Fächer_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Fächer"]/@varname]]></fieldDescription> + </field> + <field name="legende_Fächer_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Fächer"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Abschluss_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Abschluss"]/@varname]]></fieldDescription> + </field> + <field name="legende_Abschluss_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Abschluss"]/value_caption]]></fieldDescription> + </field> + <field name="legende_bis Fachsemester_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="bis Fachsemester"]/@varname]]></fieldDescription> + </field> + <field name="legende_bis Fachsemester_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="bis Fachsemester"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Spaltenlayout_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Spaltenlayout"]/@varname]]></fieldDescription> + </field> + <field name="legende_Spaltenlayout_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Spaltenlayout"]/value_caption]]></fieldDescription> + </field> + <field name="legende_Spalten_label" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/completefields/feld [@varname="Spalten"]/@varname]]></fieldDescription> + </field> + <field name="legende_Spalten_value" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis/felder/feld [@varname="Spalten"]/value_caption]]></fieldDescription> + </field> + <field name="standdatum" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/ergebnis[ @ordnr='0']/stand]]></fieldDescription> + </field> + <field name="user" class="java.lang.String"> + <fieldDescription><![CDATA[/ergebnisse/user]]></fieldDescription> + </field> + <variable name="tabellennr" class="java.lang.Integer"> + <variableExpression><![CDATA[0]]></variableExpression> + </variable> + <variable name="MinSemester" class="java.lang.Integer" resetType="Group" resetGroup="Abschluss" calculation="Lowest"> + <variableExpression><![CDATA[$F{Semester der Prüfung (Schlüssel)}]]></variableExpression> + </variable> + <variable name="MaxSemester" class="java.lang.Integer" resetType="Group" resetGroup="Abschluss" calculation="Highest"> + <variableExpression><![CDATA[$F{Semester der Prüfung (Schlüssel)}]]></variableExpression> + </variable> + <group name="tabellennr"> + <groupExpression><![CDATA[$V{tabellennr}]]></groupExpression> + </group> + <group name="Fach"> + <groupExpression><![CDATA[$F{Fach}]]></groupExpression> + </group> + <group name="Abschluss" isStartNewPage="true"> + <groupExpression><![CDATA[$F{Abschluss}]]></groupExpression> + <groupHeader> + <band height="60"> + <property name="com.jaspersoft.studio.unit.height" value="pixel"/> + <textField> + <reportElement style="LegendLabel" x="0" y="30" width="818" height="20" uuid="b5c9a9db-b01b-48ab-9dca-3478eae8829e"/> + <textElement verticalAlignment="Bottom"> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA["Filterkriterien: "]]></textFieldExpression> + </textField> + <textField textAdjust="StretchHeight"> + <reportElement style="LegendContent" x="0" y="50" width="818" height="10" isPrintWhenDetailOverflows="true" backcolor="#FFFFFF" uuid="0d6743c3-cd7a-471f-baca-226acf0a9dbc"/> + <box topPadding="10" leftPadding="2" bottomPadding="10" rightPadding="2"/> + <textFieldExpression><![CDATA[""+(($F{legende_Seit Semester_value}==null || $F{legende_Seit Semester_value}=="")?"":($F{legende_Seit Semester_label}+": "+$F{legende_Seit Semester_value}+"; ")) ++(($F{legende_Bis Semester_value}==null || $F{legende_Bis Semester_value}=="")?"":($F{legende_Bis Semester_label}+": "+$F{legende_Bis Semester_value}+"; ")) ++(($F{legende_Semestertyp_value}==null || $F{legende_Semestertyp_value}=="")?"":($F{legende_Semestertyp_label}+": "+$F{legende_Semestertyp_value}+"; ")) ++(($F{legende_Spaltenlayout_value}==null || $F{legende_Spaltenlayout_value}=="")?"":($F{legende_Spaltenlayout_label}+": "+$F{legende_Spaltenlayout_value}+"; ")) + +"Datenstand: "+ $F{standdatum} + "; " + "Erstellt: "+ DATEFORMAT( TODAY(), "dd.MM.YYYY")]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="0" width="818" height="30" uuid="cd4ea430-054a-4958-a410-35ce51cec7d5"> + <propertyExpression name="net.sf.jasperreports.export.xls.sheet.name"><![CDATA[$F{Fach}+" "+$F{Abschluss}]]></propertyExpression> + </reportElement> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$F{Fach}+" "+$F{Abschluss}]]></textFieldExpression> + </textField> + </band> + </groupHeader> + <groupFooter> + <band height="55"> + <staticText> + <reportElement x="0" y="15" width="818" height="20" uuid="63ced6b8-8393-407e-aebf-76351478ff2c"> + <property name="com.jaspersoft.studio.unit.y" value="px"/> + </reportElement> + <text><![CDATA[* Bei weniger als 5 Prüfungsteilnehmern werden keine Durchschnittsnoten oder Durchfallquoten ausgewiesen.]]></text> + </staticText> + <staticText> + <reportElement x="0" y="35" width="818" height="20" uuid="30399079-73f3-4bf2-8a55-f7f313aab901"/> + <text><![CDATA[Die Spalte "Nicht erschienen" dient zur ergänzenden Information, d.h. die hier angegebenen "Nicht erschienen" sind in den Spalten "Teilnehmer", "Durchschnittsnote" und "Durchfallquote in %" enthalten.]]></text> + </staticText> + </band> + </groupFooter> + </group> + <group name="Semester"> + <groupExpression><![CDATA[$F{Semester der Prüfung (Schlüssel)}]]></groupExpression> + <groupHeader> + <band height="45"> + <staticText> + <reportElement positionType="Float" x="0" y="30" width="51" height="15" uuid="b2beb035-a6bc-40a4-844d-d9fe2f5891a4"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[pnr]]></text> + </staticText> + <staticText> + <reportElement positionType="Float" x="435" y="30" width="128" height="15" uuid="b8f5202b-2d0a-427f-81de-c923cbe2f094"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[Durchschnittsnote *]]></text> + </staticText> + <staticText> + <reportElement positionType="Float" x="358" y="30" width="77" height="15" uuid="7e3c57b7-1ed1-470e-92a4-fe799dae0d9f"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[Teilnehmer]]></text> + </staticText> + <staticText> + <reportElement positionType="Float" x="691" y="30" width="127" height="15" uuid="c77831d1-4cc7-4401-aef8-585d8a64e7a9"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[Nicht erschienen]]></text> + </staticText> + <staticText> + <reportElement positionType="Float" x="51" y="30" width="307" height="15" uuid="1c8d7170-556e-4e09-a555-94f72f81509e"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[Name der Prüfung]]></text> + </staticText> + <staticText> + <reportElement positionType="Float" x="563" y="30" width="128" height="15" uuid="8cd3f230-31bf-4855-8009-22e8e5fcc20b"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font isBold="true"/> + </textElement> + <text><![CDATA[Durchfallquote in % *]]></text> + </staticText> + <textField> + <reportElement x="0" y="0" width="818" height="30" uuid="dde46984-9757-4065-970a-042ac9e725c4"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA["Prüfungen nach dem "+$F{Semester der Prüfung}]]></textFieldExpression> + </textField> + </band> + </groupHeader> + <groupFooter> + <band height="50"/> + </groupFooter> + </group> + <detail> + <band height="15" splitType="Stretch"> + <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.spreadsheet.SpreadsheetLayout"/> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="0" y="0" width="51" height="15" uuid="ab1dcbe4-f124-430c-9831-e3a1aba7e82d"> + <property name="com.jaspersoft.studio.unit.x" value="px"/> + </reportElement> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Left" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{pnr}]]></textFieldExpression> + <patternExpression><![CDATA[]]></patternExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="51" y="0" width="307" height="15" uuid="e0421889-bb9a-4324-bcf3-edc738d36828"> + <property name="com.jaspersoft.studio.unit.x" value="px"/> + </reportElement> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Left" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{Name der Prüfung}]]></textFieldExpression> + <patternExpression><![CDATA[]]></patternExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="358" y="0" width="77" height="15" uuid="6fcce53f-6e5b-43f5-bee1-74ca78fda172"/> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{Teilnehmer}]]></textFieldExpression> + <patternExpression><![CDATA["#,##0"]]></patternExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="435" y="0" width="128" height="15" uuid="74f016aa-b70a-44c5-97c7-4a2c458ad6d7"/> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{Durchschnittsnote *}]]></textFieldExpression> + <patternExpression><![CDATA["#,##0.00;-#,##0.00"]]></patternExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="563" y="0" width="128" height="15" uuid="e02a56f9-bdf2-4ca3-8933-73cded7631de"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{Durchfallquote in % *}]]></textFieldExpression> + <patternExpression><![CDATA["#,##0.00;-#,##0.00"]]></patternExpression> + </textField> + <textField textAdjust="StretchHeight" isBlankWhenNull="true"> + <reportElement stretchType="ContainerHeight" x="691" y="0" width="127" height="15" uuid="39488aeb-b9b9-4656-8e15-f7f00b5f02ea"> + <property name="com.jaspersoft.studio.unit.height" value="px"/> + </reportElement> + <box> + <topPen lineWidth="0.5"/> + <leftPen lineWidth="0.5"/> + <bottomPen lineWidth="0.5"/> + <rightPen lineWidth="0.5"/> + </box> + <textElement textAlignment="Right" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$F{Nicht erschienen}]]></textFieldExpression> + <patternExpression><![CDATA["#,##0"]]></patternExpression> + </textField> + </band> + </detail> +</jasperReport>