Key idea: How simple can it be?
Important Points!
1- No need to play with query directly if you can easily generate grid from a query. And i think this was the most scary thing for developers when working on dynamic crosstabs generated at runtime.
2- Crosstab require columns names for rows, cols and values as design time initial default settings even before we can call crosstab dialog box at runtime (no idea why there was needed for that).
3- There you avoid giving actual columns names. You give immediate static numbers as expressions for all required entries.
![](data:image/png;base64,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)
Then i exported the saved crosstab and copied every line from source of it and used those lines in an array in script. I replaced the table() section with the query user provide at runtime. see the function i created which ask for query and return crosstab source at runtime and you will understand every piece of it.
Now Runtime: At this point i have grid generated from the same query user provided (from which i get list of columns instead of poking DB or shuffling sorting/searching query directly). I give call to the function who generate source successfully and then i call the crosstab dialog box function(user can drag actual columns and apply expressions whatever he/she need to do). Finally retrieve() call is made.
Here is the function that successfully generate crosstab source for either a very complex query or for a stored procedure. I checked it and it definitely work like a knife in butter.
Paste following code in a function that return Crosstab Source Sting and receive SQL Query String. Please indent the code for yourself because i could not find code block tags.
String CrosstabSyntax, Merging[], AllCols[], ColType, ColExp
Integer ColNo, MaxCols
/// initializing of constants
/// a global function returns array of columns names for a given datawindow control
AllCols = gf_getdwobjectsarray(graph.tp_data.dw_data, "column", FALSE, FALSE)
MaxCols = UpperBound(AllCols)
/// 1
Merging[1] = "release 12.5;"
Merging[1] += "~r~n"
/// 2
Merging[2] = "datawindow(units=0 timer_interval=0 color=1073741824 brushmode=0 transparency=0 gradient.angle=0 gradient.color=8421504 gradient.focus=0 gradient.repetition.count=0 gradient.repetition.length=100 gradient.repetition.mode=0 gradient.scale=100 gradient.spread=100 gradient.transparency=0 picture.blur=0 picture.clip.bottom=0 picture.clip.left=0 picture.clip.right=0 picture.clip.top=0 picture.mode=0 picture.scale.x=100 picture.scale.y=100 picture.transparency=0 processing=4 HTMLDW=no print.printername=~"~" print.documentname=~"~" print.orientation = 0 print.margin.left = 110 print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes print.prompt=no print.buttons=no print.preview.buttons=no print.cliptext=no print.overrideprintjob=no print.collate=yes print.background=no print.preview.background=no print.preview.outline=yes hidegrayline=no showbackcoloronxp=no picture.file=~"~" crosstab.dynamic = yes grid.lines=0 grid.columnmove=no selected.mouse=no )"
Merging[2] += "~r~n"
/// 3
Merging[3] = "header[1](height=72 color=~"536870912~" transparency=~"0~" gradient.color=~"8421504~" gradient.transparency=~"0~" gradient.angle=~"0~" brushmode=~"0~" gradient.repetition.mode=~"0~" gradient.repetition.count=~"0~" gradient.repetition.length=~"100~" gradient.focus=~"0~" gradient.scale=~"100~" gradient.spread=~"100~" )"
Merging[3] += "~r~n"
/// 4
Merging[4] = "header[2](height=72 color=~"536870912~" transparency=~"0~" gradient.color=~"8421504~" gradient.transparency=~"0~" gradient.angle=~"0~" brushmode=~"0~" gradient.repetition.mode=~"0~" gradient.repetition.count=~"0~" gradient.repetition.length=~"100~" gradient.focus=~"0~" gradient.scale=~"100~" gradient.spread=~"100~" )"
Merging[4] += "~r~n"
/// 5
Merging[5] = "summary(height=116 color=~"536870912~" transparency=~"0~" gradient.color=~"8421504~" gradient.transparency=~"0~" gradient.angle=~"0~" brushmode=~"0~" gradient.repetition.mode=~"0~" gradient.repetition.count=~"0~" gradient.repetition.length=~"100~" gradient.focus=~"0~" gradient.scale=~"100~" gradient.spread=~"100~" )"
Merging[5] += "~r~n"
/// 6
Merging[6] = "footer(height=0 color=~"536870912~" transparency=~"0~" gradient.color=~"8421504~" gradient.transparency=~"0~" gradient.angle=~"0~" brushmode=~"0~" gradient.repetition.mode=~"0~" gradient.repetition.count=~"0~" gradient.repetition.length=~"100~" gradient.focus=~"0~" gradient.scale=~"100~" gradient.spread=~"100~" )"
Merging[6] += "~r~n"
/// 7
Merging[7] = "detail(height=84 color=~"536870912~" transparency=~"0~" gradient.color=~"8421504~" gradient.transparency=~"0~" gradient.angle=~"0~" brushmode=~"0~" gradient.repetition.mode=~"0~" gradient.repetition.count=~"0~" gradient.repetition.length=~"100~" gradient.focus=~"0~" gradient.scale=~"100~" gradient.spread=~"100~" )"
Merging[7] += "~r~n"
/// 8
Merging[8] = "table("
/// 9
Merging[9] = "column=(type=number updatewhereclause=yes name=row_column dbname=~"row_column~" )"
Merging[9] += "~r~n" + "column=(type=number updatewhereclause=yes name=val dbname=~"val~" )"
merging[10] = "retrieve=~"" + SQL + "~" "
merging[11] = "sort=~"row_column A ~""
merging[12] = ")"
/// 13
Merging[13] = "text(band=header[1] alignment=~"0~" text=~"Count Of Val~" border=~"0~" color=~"33554432~" x=~"9~" y=~"4~" height=~"64~" width=~"416~" html.valueishtml=~"0~" name=t_1 visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[13] += "~r~n"
/// 14 :
Merging[14] = "text(band=header[1] alignment=~"0~" text=~"obj_1~" border=~"0~" color=~"33554432~" x=~"434~" y=~"4~" height=~"64~" width=~"343~" html.valueishtml=~"0~" name=t_2 visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[14] += "~r~n"
/// 15 :
Merging[15] = "text(band=header[2] alignment=~"0~" text=~"222~" border=~"0~" color=~"33554432~" x=~"9~" y=~"4~" height=~"64~" width=~"416~" html.valueishtml=~"0~" name=row_column_t visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[15] += "~r~n"
/// 16 : @abcd : dynamic distinct label across all columns as if it is each column's title
Merging[16] = "text(band=header[2] alignment=~"0~" text=~"@col~" border=~"0~" color=~"33554432~" x=~"434~" y=~"4~" height=~"64~" width=~"343~" html.valueishtml=~"0~" name=val_t visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[16] += "~r~n"
/// 17: Grand Total : /// its static column title for grand totals of every row
Merging[17] = "text(band=header[2] alignment=~"0~" text=~"Grand Total ~" border=~"0~" color=~"33554432~" x=~"786~" y=~"4~" height=~"64~" width=~"686~" html.valueishtml=~"0~" name=grand_count_val_t visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[17] += "~r~n"
/// 18: Arrestee : /// dynamic distinct detail column presenting every row's name
Merging[18] = "column(band=detail id=1 alignment=~"1~" tabsequence=32766 border=~"0~" color=~"33554432~" x=~"9~" y=~"4~" height=~"76~" width=~"416~" format=~"[general]~" html.valueishtml=~"0~" name=row_column visible=~"1~" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"400~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[18] += "~r~n"
/// 19: Checks : /// dynamic detail column presenting Values for every row & col
Merging[19] = "column(band=detail id=2 alignment=~"1~" tabsequence=32766 border=~"0~" color=~"33554432~" x=~"434~" y=~"4~" height=~"76~" width=~"343~" format=~"[general]~" html.valueishtml=~"0~" name=val visible=~"1~" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes crosstab.repeat=yes font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"400~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[19] += "~r~n"
/// 20: crosstabsum() : /// compute for grand sum on the most right side of every row
Merging[20] = "compute(band=detail alignment=~"1~" expression=~"crosstabsum(1)~"border=~"0~" color=~"33554432~" x=~"786~" y=~"4~" height=~"76~" width=~"686~" format=~"[general]~" html.valueishtml=~"0~" name=grand_count_val visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[20] += "~r~n"
/// 21: Grand Total : /// Work like static text but nobody know why as compute
Merging[21] = "compute(band=summary alignment=~"1~" expression=~"~~~"Grand Total~~~"~"border=~"0~" color=~"33554432~" x=~"9~" y=~"4~" height=~"76~" width=~"416~" format=~"[general]~" html.valueishtml=~"0~" name=compute_1 visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" font.italic=~"1~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[21] += "~r~n"
/// 22: Values Sum() : /// compute sum of values vertically
Merging[22] = "compute(band=summary alignment=~"1~" expression=~"sum(val for all )~"border=~"0~" color=~"33554432~" x=~"434~" y=~"4~" height=~"76~" width=~"343~" format=~"[general]~" html.valueishtml=~"0~" name=compute_2 visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[22] += "~r~n"
/// 23: GrandCrosstabSum() : /// sum of sums across rows & cols
Merging[23] = "compute(band=summary alignment=~"1~" expression=~"sum(grand_count_val for all )~"border=~"0~" color=~"33554432~" x=~"786~" y=~"4~" height=~"76~" width=~"686~" format=~"[general]~" html.valueishtml=~"0~" name=compute_3 visible=~"1~" font.face=~"Times New Roman~" font.height=~"-9~" font.weight=~"700~" font.family=~"1~" font.pitch=~"2~" font.charset=~"0~" background.mode=~"1~" background.color=~"536870912~" background.transparency=~"0~" background.gradient.color=~"8421504~" background.gradient.transparency=~"0~" background.gradient.angle=~"0~" background.brushmode=~"0~" background.gradient.repetition.mode=~"0~" background.gradient.repetition.count=~"0~" background.gradient.repetition.length=~"100~" background.gradient.focus=~"0~" background.gradient.scale=~"100~" background.gradient.spread=~"100~" tooltip.backcolor=~"134217752~" tooltip.delay.initial=~"0~" tooltip.delay.visible=~"32000~" tooltip.enabled=~"0~" tooltip.hasclosebutton=~"0~" tooltip.icon=~"0~" tooltip.isbubble=~"0~" tooltip.maxwidth=~"0~" tooltip.textcolor=~"134217751~" tooltip.transparency=~"0~" transparency=~"0~" )"
Merging[23] += "~r~n"
/// 24: /// crosstab relarted line
Merging[24] = "crosstab("
Merging[24] += "band = foreground crosstabonly = yes "
Merging[24] += "~r~n"
/// loop on all columns to complete next Merging (collect all columns names)
ColExp=""
FOR ColNo = 1 TO MaxCols
ColExp = AllCols[ColNo] + ", "
NEXT
ColExp = Left(ColExp, Len(ColExp) - 2)
/// 25:
Merging[25] = "columns = ~"111~" rows = ~"222~" values = ~"count(333 for crosstab)~" "
Merging[25] += "sourcenames = ~""+ColExp+"~""
Merging[25] += ")" ///crosstab closed
Merging[25] += "htmltable(border=~"0~" cellpadding=~"1~" cellspacing=~"1~" )"
Merging[25] += "~r~n"
/// 26:
Merging[26] = "htmlgen(clientevents=~"1~" clientvalidation=~"1~" clientcomputedfields=~"1~" clientformatting=~"0~" clientscriptable=~"0~" generatejavascript=~"1~" encodeselflinkargs=~"1~" netscapelayers=~"0~" pagingmethod=0 generatedddwframes=~"1~" )"
Merging[26] += "~r~n"
/// 27:
Merging[27] = "xhtmlgen() cssgen(sessionspecific=~"0~" )"
Merging[27] += "~r~n"
/// 28:
Merging[28] = "xmlgen(inline=~"0~" )"
Merging[28] += "~r~n"
/// 29:
Merging[29] = "xsltgen()"
Merging[29] += "~r~n"
/// 30:
Merging[30] = "jsgen()"
Merging[30] += "~r~n"
/// 31:
Merging[31] = "export.xml(headgroups=~"1~" includewhitespace=~"0~" metadatatype=0 savemetadata=0 )"
Merging[31] += "~r~n"
/// 32:
Merging[32] = "import.xml()"
Merging[32] += "~r~n"
/// 33:
Merging[33] = "export.pdf(method=0 distill.custompostscript=~"0~" xslfop.print=~"0~" )"
Merging[33] += "~r~n"
/// 34:
Merging[34] = "export.xhtml()"
Merging[34] += "~r~n~r~n"
FOR ColNo = 1 TO UpperBound(Merging)
CrosstabSyntax += Merging[ColNo]
NEXT
Return CrosstabSyntax
Enjoy!
Thank you
I'm glad you found a solution and appreciate you sharing it with us.