diff --git a/Master Template.xlsm b/Master Template.xlsm index 02ab488..71e6e2d 100644 Binary files a/Master Template.xlsm and b/Master Template.xlsm differ diff --git a/Master Template.xlsm_EXPORTS/build.frx b/Master Template.xlsm_EXPORTS/build.frx index c6b3c61..a52a995 100644 Binary files a/Master Template.xlsm_EXPORTS/build.frx and b/Master Template.xlsm_EXPORTS/build.frx differ diff --git a/Master Template.xlsm_EXPORTS/changes.frx b/Master Template.xlsm_EXPORTS/changes.frx index adc151f..e862ef0 100644 Binary files a/Master Template.xlsm_EXPORTS/changes.frx and b/Master Template.xlsm_EXPORTS/changes.frx differ diff --git a/Master Template.xlsm_EXPORTS/fpvt.frx b/Master Template.xlsm_EXPORTS/fpvt.frx index 16948e0..afe05f7 100644 Binary files a/Master Template.xlsm_EXPORTS/fpvt.frx and b/Master Template.xlsm_EXPORTS/fpvt.frx differ diff --git a/Master Template.xlsm_EXPORTS/openf.frx b/Master Template.xlsm_EXPORTS/openf.frx index f283b87..e539813 100644 Binary files a/Master Template.xlsm_EXPORTS/openf.frx and b/Master Template.xlsm_EXPORTS/openf.frx differ diff --git a/Master Template.xlsm_EXPORTS/part.frx b/Master Template.xlsm_EXPORTS/part.frx index 95ac621..736f979 100644 Binary files a/Master Template.xlsm_EXPORTS/part.frx and b/Master Template.xlsm_EXPORTS/part.frx differ diff --git a/Master Template.xlsm_EXPORTS/shOrders.cls b/Master Template.xlsm_EXPORTS/shOrders.cls index d301ae0..bf599ce 100644 --- a/Master Template.xlsm_EXPORTS/shOrders.cls +++ b/Master Template.xlsm_EXPORTS/shOrders.cls @@ -38,6 +38,30 @@ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean Dim pf As PivotField Dim pi As PivotItem + ' Serialize the report filters in SQL and JSON format. + pt.PivotCache.MissingItemsLimit = xlMissingItemsNone + pt.PivotCache.Refresh + + Dim segmSql As String + Dim segmJSql As String + segmSql = "segm IN (" + segmJSql = """segm"": [" + + Set pf = pt.PivotFields("segm") + For Each pi In pf.PivotItems + If pi.Visible Then + If Right(segmSql, 1) <> "(" Then + segmSql = segmSql & ", " + segmJSql = segmJSql & ", " + End If + segmSql = segmSql & "'" & escape_sql(pi.Name) & "'" + segmJSql = segmJSql & """" & escape_json(pi.Name) & """" + End If + Next + segmSql = segmSql & ")" + segmJSql = segmJSql & "]" + + ' Serialize the row items in SQL and JSON format. Set ri = Target.Cells.PivotCell.RowItems Set ci = Target.Cells.PivotCell.ColumnItems Set df = Target.Cells.PivotCell.DataField @@ -45,18 +69,28 @@ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean Set rd = Target.Cells.PivotTable.RowFields Set cd = Target.Cells.PivotTable.ColumnFields - ReDim handler.sc(ri.Count, 1) + Dim segmOffset As Integer + segmOffset = IIf(Right(segmSql, 2) = "()", 0, 1) handler.sql = "" handler.jsql = "" + ReDim handler.sc(ri.Count + segmOffset, 1) + If segmOffset = 1 Then + handler.sql = segmSql + handler.jsql = segmJSql + + handler.sc(0, 0) = "segm" + handler.sc(0, 1) = Mid(segmJSql, 9) + End If + For i = 1 To ri.Count - If i <> 1 Then handler.sql = handler.sql & vbCrLf & "AND " - If i <> 1 Then handler.jsql = handler.jsql & vbCrLf & "," + If handler.sql <> "" Then handler.sql = handler.sql & vbCrLf & "AND " + If handler.sql <> "" Then handler.jsql = handler.jsql & vbCrLf & "," handler.sql = handler.sql & rd(piv_pos(rd, i)).Name & " = '" & escape_sql(ri(i).Name) & "'" - jsql = jsql & """" & rd(piv_pos(rd, i)).Name & """:""" & escape_json(ri(i).Name) & """" - handler.sc(i - 1, 0) = rd(piv_pos(rd, i)).Name - handler.sc(i - 1, 1) = ri(i).Name + handler.jsql = handler.jsql & """" & rd(piv_pos(rd, i)).Name & """:""" & escape_json(ri(i).Name) & """" + handler.sc(i - 1 + segmOffset, 0) = rd(piv_pos(rd, i)).Name + handler.sc(i - 1 + segmOffset, 1) = ri(i).Name Next i scenario = "{" & handler.jsql & "}"