9e926540f969215b57027516ed9df7f2a334a24f
FAQ/PreExecuteReportSet.md
| ... | ... | @@ -0,0 +1,147 @@ |
| 1 | +#The PreExecuteReportSet() Method |
|
| 2 | + |
|
| 3 | +[[_TOC_]] |
|
| 4 | + |
|
| 5 | +##Hidden Filter C♯ |
|
| 6 | + |
|
| 7 | +This is a code sample showing how to add a hidden filter to a report. The first filter uses the _strArray_, but you will need to write a function which returns the columns which you wish to filter upon. |
|
| 8 | + |
|
| 9 | +```csharp |
|
| 10 | +public override void PreExecuteReportSet(Izenda.AdHoc.ReportSet reportSet) |
|
| 11 | + |
|
| 12 | +{ |
|
| 13 | + /* First Example, multi valued filter */ |
|
| 14 | + //columns to filter - write your own function |
|
| 15 | + |
|
| 16 | + string[] strArray = new string[3] {"Beverages", "Seafood", "Produce"}; |
|
| 17 | + |
|
| 18 | + if(reportSet.Source.Contains("[dbo].[Categories]")) |
|
| 19 | + { |
|
| 20 | + Izenda.AdHoc.Filter newFilter = new Izenda.AdHoc.Filter(); |
|
| 21 | + newFilter.Column="CategoryName"; |
|
| 22 | + newFilter.Operator=OperatorTypes.In; |
|
| 23 | + newFilter.Values = strArray; |
|
| 24 | + |
|
| 25 | + reportSet.Filters.AddHidden(newFilter); |
|
| 26 | + // will only show the category names corresponding to the array values |
|
| 27 | + } //end if |
|
| 28 | + |
|
| 29 | + /* Second Example, single valued filter */ |
|
| 30 | + if (reportSet.Source.Contains("[dbo].[OtherCategories]")) |
|
| 31 | + { |
|
| 32 | + Izenda.AdHoc.Filter newFilter = new Izenda.AdHoc.Filter(); |
|
| 33 | + newFilter.Column = "CategoryName"; |
|
| 34 | + newFilter.Operator = OperatorTypes.Like; |
|
| 35 | + newFilter.Value = "Sea"; |
|
| 36 | + reportSet.Filters.AddHidden(newFilter); |
|
| 37 | + // will only show category names having the exact string "Sea" in them |
|
| 38 | + } //end if |
|
| 39 | +}//end method |
|
| 40 | +``` |
|
| 41 | +Essentially, to use a multi valued filter, you must use the In operator (basically an equals operator with comma separated values) and the .Values specifier. |
|
| 42 | + |
|
| 43 | +To use a single valued operator such as "Like" (basically a case sensitive contains), you can not use an array and must use the .Value specifier. |
|
| 44 | + |
|
| 45 | +##Hidden Filter with sql override |
|
| 46 | + |
|
| 47 | +```csharp |
|
| 48 | +Public Overrides Sub PreExecuteReportSet(ByVal reportSet As Izenda.AdHoc.ReportSet) |
|
| 49 | + |
|
| 50 | + MyBase.PreExecuteReportSet(reportSet) |
|
| 51 | + 'If reportSet.Source.Equals("[dbo].[Customers]") Then |
|
| 52 | + Dim filter As New Izenda.AdHoc.Filter() |
|
| 53 | + filter.Column = "email" |
|
| 54 | + filter.SqlOverride = "(aspnet_Membership.email = 'greg@edelinsolutions.com' or aspnet_Membership.email='gedelin@yahoo.com')" |
|
| 55 | + reportSet.Filters.AddHidden(filter) |
|
| 56 | + 'End If |
|
| 57 | +End Sub |
|
| 58 | +``` |
|
| 59 | + |
|
| 60 | +##Hidden Filter VB.NET |
|
| 61 | + |
|
| 62 | +```visualbasic |
|
| 63 | +Public Overrides Sub PreExecuteReportSet(ByVal reportSet As Izenda.AdHoc.ReportSet) |
|
| 64 | + MyBase.PreExecuteReportSet(reportSet) |
|
| 65 | + Dim emails(1) As String |
|
| 66 | + emails(0) = "greg@edelinsolutions.com" |
|
| 67 | + emails(1) = "gedelin@yahoo.com1" |
|
| 68 | + Dim filter As New Izenda.AdHoc.Filter() |
|
| 69 | + filter.Column = "email" |
|
| 70 | + filter.Operator = OperatorTypes.In |
|
| 71 | + filter.Values = emails |
|
| 72 | + reportSet.Filters.AddHidden(filter) |
|
| 73 | +End Sub |
|
| 74 | + |
|
| 75 | + |
|
| 76 | +##Using a stored procedure |
|
| 77 | + |
|
| 78 | +This example uses a stored procedure to populate a table before report design or execution. As shown in the comments, the table StoredProcResults must already exist. Every time a report is created or viewed this stored procedure will update the results of the _StoredProcResults_ table. |
|
| 79 | + |
|
| 80 | +```csharp |
|
| 81 | +// Customize a report on the fly prior to execution on a per user basis |
|
| 82 | +public override void PreExecuteReportSet(Izenda.AdHoc.ReportSet reportSet) |
|
| 83 | +{ |
|
| 84 | + |
|
| 85 | + /*this sample uses the adventure works database |
|
| 86 | + |
|
| 87 | + Here is the definition of the table and |
|
| 88 | + stored procedure created for this report. |
|
| 89 | + |
|
| 90 | + CREATE TABLE [dbo].[StoredProcResults] |
|
| 91 | + [ProductID] [int] NOT NULL, |
|
| 92 | + [OrderQuantity] [int] NOT NULL, |
|
| 93 | + [Total] [int] NOT NULL, |
|
| 94 | + [DueDate] [smalldatetime] NOT NULL |
|
| 95 | + ) ON [PRIMARY] |
|
| 96 | + |
|
| 97 | + CREATE PROCEDURE DoCustomAction ( |
|
| 98 | + @date1 as smalldatetime, |
|
| 99 | + @date2 as smalldatetime |
|
| 100 | + ) |
|
| 101 | + AS |
|
| 102 | + BEGIN |
|
| 103 | + |
|
| 104 | + insert into StoredProcResults |
|
| 105 | + select ProductID,OrderQty,LineTotal,ModifiedDate |
|
| 106 | + from Sales.SalesOrderDetail |
|
| 107 | + where ModifiedDate >= @date1 and ModifiedDate <= @date2 |
|
| 108 | + |
|
| 109 | + END |
|
| 110 | + */ |
|
| 111 | + |
|
| 112 | + string currentReportName = |
|
| 113 | + HttpContext.Current.Request.QueryString["rn"]; |
|
| 114 | + |
|
| 115 | + if (currentReportName == "StoredProcExample") |
|
| 116 | + { |
|
| 117 | + SqlConnection myConnection = new |
|
| 118 | + SqlConnection(Izenda.AdHoc.AdHocSettings.SqlServerConnectionString); |
|
| 119 | + SqlCommand myCommand = new SqlCommand("DoCustomAction", myConnection); |
|
| 120 | + |
|
| 121 | + // Mark the Command as a SPROC |
|
| 122 | + myCommand.CommandType = System.Data.CommandType.StoredProcedure; |
|
| 123 | + |
|
| 124 | + // Add Parameters to SPROC |
|
| 125 | + SqlParameter parameterdate1 = new SqlParameter |
|
| 126 | + ("@date1", System.Data.SqlDbType.SmallDateTime); |
|
| 127 | + parameterdate1.Value = "1/1/2003"; |
|
| 128 | + myCommand.Parameters.Add(parameterdate1); |
|
| 129 | + |
|
| 130 | + SqlParameter parameterdate2 = new SqlParameter |
|
| 131 | + ("@date2", System.Data.SqlDbType.SmallDateTime); |
|
| 132 | + parameterdate2.Value = "12/31/2003"; |
|
| 133 | + myCommand.Parameters.Add(parameterdate2); |
|
| 134 | + |
|
| 135 | + try |
|
| 136 | + |
|
| 137 | + myConnection.Open(); |
|
| 138 | + myCommand.ExecuteNonQuery(); |
|
| 139 | + } |
|
| 140 | + |
|
| 141 | + finally |
|
| 142 | + { |
|
| 143 | + myConnection.Close(); |
|
| 144 | + } |
|
| 145 | + } |
|
| 146 | +} |
|
| 147 | +``` |
|
| ... | ... | \ No newline at end of file |
PreExecuteReportSet.md
| ... | ... | @@ -1,147 +0,0 @@ |
| 1 | -#The PreExecuteReportSet() Method |
|
| 2 | - |
|
| 3 | -[[_TOC_]] |
|
| 4 | - |
|
| 5 | -##Hidden Filter C♯ |
|
| 6 | - |
|
| 7 | -This is a code sample showing how to add a hidden filter to a report. The first filter uses the _strArray_, but you will need to write a function which returns the columns which you wish to filter upon. |
|
| 8 | - |
|
| 9 | -```csharp |
|
| 10 | -public override void PreExecuteReportSet(Izenda.AdHoc.ReportSet reportSet) |
|
| 11 | - |
|
| 12 | -{ |
|
| 13 | - /* First Example, multi valued filter */ |
|
| 14 | - //columns to filter - write your own function |
|
| 15 | - |
|
| 16 | - string[] strArray = new string[3] {"Beverages", "Seafood", "Produce"}; |
|
| 17 | - |
|
| 18 | - if(reportSet.Source.Contains("[dbo].[Categories]")) |
|
| 19 | - { |
|
| 20 | - Izenda.AdHoc.Filter newFilter = new Izenda.AdHoc.Filter(); |
|
| 21 | - newFilter.Column="CategoryName"; |
|
| 22 | - newFilter.Operator=OperatorTypes.In; |
|
| 23 | - newFilter.Values = strArray; |
|
| 24 | - |
|
| 25 | - reportSet.Filters.AddHidden(newFilter); |
|
| 26 | - // will only show the category names corresponding to the array values |
|
| 27 | - } //end if |
|
| 28 | - |
|
| 29 | - /* Second Example, single valued filter */ |
|
| 30 | - if (reportSet.Source.Contains("[dbo].[OtherCategories]")) |
|
| 31 | - { |
|
| 32 | - Izenda.AdHoc.Filter newFilter = new Izenda.AdHoc.Filter(); |
|
| 33 | - newFilter.Column = "CategoryName"; |
|
| 34 | - newFilter.Operator = OperatorTypes.Like; |
|
| 35 | - newFilter.Value = "Sea"; |
|
| 36 | - reportSet.Filters.AddHidden(newFilter); |
|
| 37 | - // will only show category names having the exact string "Sea" in them |
|
| 38 | - } //end if |
|
| 39 | -}//end method |
|
| 40 | -``` |
|
| 41 | -Essentially, to use a multi valued filter, you must use the In operator (basically an equals operator with comma separated values) and the .Values specifier. |
|
| 42 | - |
|
| 43 | -To use a single valued operator such as "Like" (basically a case sensitive contains), you can not use an array and must use the .Value specifier. |
|
| 44 | - |
|
| 45 | -##Hidden Filter with sql override |
|
| 46 | - |
|
| 47 | -```csharp |
|
| 48 | -Public Overrides Sub PreExecuteReportSet(ByVal reportSet As Izenda.AdHoc.ReportSet) |
|
| 49 | - |
|
| 50 | - MyBase.PreExecuteReportSet(reportSet) |
|
| 51 | - 'If reportSet.Source.Equals("[dbo].[Customers]") Then |
|
| 52 | - Dim filter As New Izenda.AdHoc.Filter() |
|
| 53 | - filter.Column = "email" |
|
| 54 | - filter.SqlOverride = "(aspnet_Membership.email = 'greg@edelinsolutions.com' or aspnet_Membership.email='gedelin@yahoo.com')" |
|
| 55 | - reportSet.Filters.AddHidden(filter) |
|
| 56 | - 'End If |
|
| 57 | -End Sub |
|
| 58 | -``` |
|
| 59 | - |
|
| 60 | -##Hidden Filter VB.NET |
|
| 61 | - |
|
| 62 | -```visualbasic |
|
| 63 | -Public Overrides Sub PreExecuteReportSet(ByVal reportSet As Izenda.AdHoc.ReportSet) |
|
| 64 | - MyBase.PreExecuteReportSet(reportSet) |
|
| 65 | - Dim emails(1) As String |
|
| 66 | - emails(0) = "greg@edelinsolutions.com" |
|
| 67 | - emails(1) = "gedelin@yahoo.com1" |
|
| 68 | - Dim filter As New Izenda.AdHoc.Filter() |
|
| 69 | - filter.Column = "email" |
|
| 70 | - filter.Operator = OperatorTypes.In |
|
| 71 | - filter.Values = emails |
|
| 72 | - reportSet.Filters.AddHidden(filter) |
|
| 73 | -End Sub |
|
| 74 | - |
|
| 75 | - |
|
| 76 | -##Using a stored procedure |
|
| 77 | - |
|
| 78 | -This example uses a stored procedure to populate a table before report design or execution. As shown in the comments, the table StoredProcResults must already exist. Every time a report is created or viewed this stored procedure will update the results of the _StoredProcResults_ table. |
|
| 79 | - |
|
| 80 | -```csharp |
|
| 81 | -// Customize a report on the fly prior to execution on a per user basis |
|
| 82 | -public override void PreExecuteReportSet(Izenda.AdHoc.ReportSet reportSet) |
|
| 83 | -{ |
|
| 84 | - |
|
| 85 | - /*this sample uses the adventure works database |
|
| 86 | - |
|
| 87 | - Here is the definition of the table and |
|
| 88 | - stored procedure created for this report. |
|
| 89 | - |
|
| 90 | - CREATE TABLE [dbo].[StoredProcResults] |
|
| 91 | - [ProductID] [int] NOT NULL, |
|
| 92 | - [OrderQuantity] [int] NOT NULL, |
|
| 93 | - [Total] [int] NOT NULL, |
|
| 94 | - [DueDate] [smalldatetime] NOT NULL |
|
| 95 | - ) ON [PRIMARY] |
|
| 96 | - |
|
| 97 | - CREATE PROCEDURE DoCustomAction ( |
|
| 98 | - @date1 as smalldatetime, |
|
| 99 | - @date2 as smalldatetime |
|
| 100 | - ) |
|
| 101 | - AS |
|
| 102 | - BEGIN |
|
| 103 | - |
|
| 104 | - insert into StoredProcResults |
|
| 105 | - select ProductID,OrderQty,LineTotal,ModifiedDate |
|
| 106 | - from Sales.SalesOrderDetail |
|
| 107 | - where ModifiedDate >= @date1 and ModifiedDate <= @date2 |
|
| 108 | - |
|
| 109 | - END |
|
| 110 | - */ |
|
| 111 | - |
|
| 112 | - string currentReportName = |
|
| 113 | - HttpContext.Current.Request.QueryString["rn"]; |
|
| 114 | - |
|
| 115 | - if (currentReportName == "StoredProcExample") |
|
| 116 | - { |
|
| 117 | - SqlConnection myConnection = new |
|
| 118 | - SqlConnection(Izenda.AdHoc.AdHocSettings.SqlServerConnectionString); |
|
| 119 | - SqlCommand myCommand = new SqlCommand("DoCustomAction", myConnection); |
|
| 120 | - |
|
| 121 | - // Mark the Command as a SPROC |
|
| 122 | - myCommand.CommandType = System.Data.CommandType.StoredProcedure; |
|
| 123 | - |
|
| 124 | - // Add Parameters to SPROC |
|
| 125 | - SqlParameter parameterdate1 = new SqlParameter |
|
| 126 | - ("@date1", System.Data.SqlDbType.SmallDateTime); |
|
| 127 | - parameterdate1.Value = "1/1/2003"; |
|
| 128 | - myCommand.Parameters.Add(parameterdate1); |
|
| 129 | - |
|
| 130 | - SqlParameter parameterdate2 = new SqlParameter |
|
| 131 | - ("@date2", System.Data.SqlDbType.SmallDateTime); |
|
| 132 | - parameterdate2.Value = "12/31/2003"; |
|
| 133 | - myCommand.Parameters.Add(parameterdate2); |
|
| 134 | - |
|
| 135 | - try |
|
| 136 | - |
|
| 137 | - myConnection.Open(); |
|
| 138 | - myCommand.ExecuteNonQuery(); |
|
| 139 | - } |
|
| 140 | - |
|
| 141 | - finally |
|
| 142 | - { |
|
| 143 | - myConnection.Close(); |
|
| 144 | - } |
|
| 145 | - } |
|
| 146 | -} |
|
| 147 | -``` |
|
| ... | ... | \ No newline at end of file |