private void LoadParameters() { decimal userId = -1; decimal reportId = -1; int reportType = -1; try { userId = decimal.Parse(Request.QueryString["userId"]); reportId = decimal.Parse(Request.QueryString["rptid"]); reportType = int.Parse(Request.QueryString["rptType"]); Session[this.UniqueID + ":UserId"] = userId; Session[this.UniqueID + ":ReportId"] = reportId; Session[this.UniqueID + ":ReportType"] = reportType; } catch { //do nothing } userId = (decimal)Session[this.UniqueID + ":UserId"]; reportId = (decimal)Session[this.UniqueID + ":ReportId"]; reportType = (int)Session[this.UniqueID + ":ReportType"]; _userProxy = new FI.BusinessObjects.User(userId, true); //not a proxy cause oltp db name is required _reportProxy = _userProxy.ReportSystem.GetReport(reportId, _userProxy.ReportSystem.GetReportType(reportType), false); }
protected void Session_End(Object sender, EventArgs e) { try { FI.BusinessObjects.User user = (FI.BusinessObjects.User)Session["User"]; if (user != null) { user.Logout(); } } catch { //do nothing } }
protected void Session_End(Object sender, EventArgs e) { try { FI.BusinessObjects.User user = (FI.BusinessObjects.User)Session["User"]; if (user != null) { user.Logout(); } // write event LogWriter.Instance.WriteEventLogEntry( "Session_End [" + (user == null ? null : user.CompanyNameShort + "." + user.Logon + "]")); } catch { //do nothing } }
private void ConvertOlap(int CompanyId, string SqlServerIP, string SaPassword) { SqlConnection con=new SqlConnection("server=" + SqlServerIP + "; User ID=sa; Password="******"; Database=DBFINF;"); con.Open(); // olap reports ----------------- DataTable table=new DataTable(); SqlDataAdapter adapter=new SqlDataAdapter(); SqlCommand cmd=con.CreateCommand(); cmd.CommandText=@" SELECT rpt_id+0 as rpt_id, case rpt_parent_report_id when 0 then 0 else rpt_parent_report_id+0 end as rpt_parent_report_id, case when rpt_sharing_status>2 then rpt_sharing_status else 0 end as rpt_sharing_status, user_id+0 as user_id, rpt_name, rpt_description, rpt_open, rpt_selected, rpt_current_rows, rpt_current_columns, rpt_current_filters, rpt_order, rpt_order_tuple, rpt_percentage_type, rpt_percentage_dim, rpt_percentage_measure, rpt_sum_dims, rpt_avg_dims, rpt_min_dims, rpt_max_dims, rpt_graph_type, rpt_graph_category, rpt_graph_series, rpt_graph_value, rpt_graph_set_scaling, rpt_empty_rows, rpt_empty_cols, rpt_nonempty_rows, rpt_nonempty_cols, rpt_nodes_open, rpt_time_range_enabled, rpt_time_range_prompt, rpt_time_range_start, rpt_time_range_end, rpt_time_range_level FROM DBWEB.dbo.treports WHERE user_id IN (SELECT user_id FROM DBWEB.dbo.tusers WHERE company_id=" + CompanyId.ToString() + @") "; adapter.SelectCommand=cmd; adapter.Fill(table); adapter.Dispose(); foreach(DataRow row in table.Rows) { FI.BusinessObjects.OlapReport.GraphOptionsEnum graphOptions=FI.BusinessObjects.OlapReport.GraphOptionsEnum.None; string reportXml=@"<R></R>"; string openNodes="<NODES></NODES>"; // create graphOptions //rpt_graph_category, rpt_graph_series, rpt_graph_value, rpt_graph_set_scaling if( ((bool)row["rpt_graph_category"])==true) graphOptions=graphOptions | FI.BusinessObjects.OlapReport.GraphOptionsEnum.ShowCategories; if( ((bool)row["rpt_graph_series"])==true) graphOptions=graphOptions | FI.BusinessObjects.OlapReport.GraphOptionsEnum.ShowSeries; if( ((bool)row["rpt_graph_value"])==true) graphOptions=graphOptions | FI.BusinessObjects.OlapReport.GraphOptionsEnum.ShowValues; if( ((bool)row["rpt_graph_set_scaling"])==true) graphOptions=graphOptions | FI.BusinessObjects.OlapReport.GraphOptionsEnum.SetScaling; // create openNodes System.Text.StringBuilder sb=new System.Text.StringBuilder(); if(row["rpt_nodes_open"]!=System.DBNull.Value && row["rpt_nodes_open"].ToString().Trim()!="") { string[] nodes=System.Text.RegularExpressions.Regex.Split(row["rpt_nodes_open"].ToString().Trim() , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); if(nodes!=null && nodes.Length>0) { sb.Append("<NODES>"); for(int i=0;i<nodes.Length;i++) { string node=nodes[i].Trim(); for(int j=0;j<i;j++) if(nodes[j].Trim()==node) //if already been added { node=""; break; } if(node!="") sb.Append(@"<ON UN=""" + FI.Common.XML.XmlEncode(node) + @"""/>"); } sb.Append("</NODES>"); openNodes=sb.ToString(); } } cmd=con.CreateCommand(); cmd.CommandText=@" SET IDENTITY_INSERT DBFINF.dbo.t_olap_reports ON INSERT INTO DBFINF.dbo.t_olap_reports( id, parent_report_id, sharing_status, user_id, name, description, is_selected, graph_type, graph_options, data, open_nodes, timestamp ) VALUES( " + row["rpt_id"].ToString() + @" , " + row["rpt_parent_report_id"].ToString() + @" , " + row["rpt_sharing_status"].ToString() + @" , " + row["user_id"].ToString() + @" , '" + row["rpt_name"].ToString().Replace("'" , "''") + @"' , '" + row["rpt_description"].ToString().Replace("'" , "''") + @"' , " + (row["rpt_open"].ToString()=="True"?1:0).ToString() + @" , " + row["rpt_graph_type"].ToString() + @" , " + ((int)graphOptions).ToString() + @" , '" + reportXml.Replace("'" , "''") + @"' , '" + openNodes.Replace("'" , "''") + @"' , GetDate() ) SET IDENTITY_INSERT DBFINF.dbo.t_olap_reports OFF "; cmd.ExecuteNonQuery(); if(row["rpt_parent_report_id"].ToString()!="0") continue; // will handle shared reports from parent report in the end of riutine // load report --------- FI.BusinessObjects.OlapReport report=null; FI.BusinessObjects.User user=new FI.BusinessObjects.User((decimal)row["user_id"] , false); try { report=(FI.BusinessObjects.OlapReport)user.ReportSystem.GetReport( (decimal)row["rpt_id"] , typeof(FI.BusinessObjects.OlapReport) , true); //report=(FI.BusinessObjects.OlapReport)user.ReportSystem.NewReport( typeof(FI.BusinessObjects.OlapReport)); } catch(Exception exc) { if(exc.Message.StartsWith("Database ") && exc.Message.EndsWith(" does not exist.")) { FI.Common.LogWriter.Instance.WriteException(exc); continue; //next report } else throw exc; } // row hierarchies and members string[] strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_current_rows"] , System.Text.RegularExpressions.Regex.Escape("##@@##") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); string[] strMems=System.Text.RegularExpressions.Regex.Split( strHier , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); FI.BusinessObjects.Olap.Hierarchy curHier=null; System.Collections.ArrayList listMems=new System.Collections.ArrayList(); for(int j=0;j<strMems.Length;j++) { string strMem=strMems[j].Trim(); if(strMem=="") continue; if(curHier==null) foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(strMem.StartsWith(hier.UniqueName)) { curHier=hier; hier.Axis=report.Axes[1]; } if(curHier==null) continue; // cannot recognize hierarchy , continue trying listMems.Add(strMem); } // add found to hier if(listMems.Count==0) continue; System.Xml.XmlElement memsEl=report.Schema.GetSchemaMembers((string[])listMems.ToArray(typeof(string))); foreach(System.Xml.XmlElement el in memsEl.ChildNodes) curHier.AddMember(new FI.BusinessObjects.Olap.SchemaMember(curHier , el), true); } // col hierarchies and members strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_current_columns"] , System.Text.RegularExpressions.Regex.Escape("##@@##") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); string[] strMems=System.Text.RegularExpressions.Regex.Split( strHier , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); FI.BusinessObjects.Olap.Hierarchy curHier=null; System.Collections.ArrayList listMems=new System.Collections.ArrayList(); for(int j=0;j<strMems.Length;j++) { string strMem=strMems[j].Trim(); if(strMem=="") continue; if(curHier==null) foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(strMem.StartsWith(hier.UniqueName)) { curHier=hier; hier.Axis=report.Axes[0]; } if(curHier==null) continue; // cannot recognize hierarchy , continue trying listMems.Add(strMem); } // add found to hier if(listMems.Count==0) continue; System.Xml.XmlElement memsEl=report.Schema.GetSchemaMembers((string[])listMems.ToArray(typeof(string))); foreach(System.Xml.XmlElement el in memsEl.ChildNodes) curHier.AddMember(new FI.BusinessObjects.Olap.SchemaMember(curHier , el), true); } // filt hierarchies and members strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_current_filters"] , System.Text.RegularExpressions.Regex.Escape("##@@##") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); string[] strMems=System.Text.RegularExpressions.Regex.Split( strHier , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); FI.BusinessObjects.Olap.Hierarchy curHier=null; System.Collections.ArrayList listMems=new System.Collections.ArrayList(); for(int j=0;j<strMems.Length;j++) { string strMem=strMems[j].Trim(); if(strMem=="") continue; if(curHier==null) foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(strMem.StartsWith(hier.UniqueName)) { curHier=hier; if(hier.Axis.Ordinal!=2) throw new Exception("Hierarchy already moved to rows or columns"); } if(curHier==null) continue; // cannot recognize hierarchy , continue trying listMems.Add(strMem); break; // one per dimension } // add found to hier if(listMems.Count==0) continue; System.Xml.XmlElement memsEl=report.Schema.GetSchemaMembers((string[])listMems.ToArray(typeof(string))); foreach(System.Xml.XmlElement el in memsEl.ChildNodes) { curHier.DataMembers.Clear(); curHier.CalculatedMembers.Clear(); curHier.AddMember(new FI.BusinessObjects.Olap.SchemaMember(curHier , el), true); break; } } // time range members //rpt_time_range_enabled, rpt_time_range_prompt, rpt_time_range_start, rpt_time_range_end, rpt_time_range_level string timeRangeLevelUn=(string)row["rpt_time_range_level"]; if((bool)row["rpt_time_range_enabled"]==true) foreach(FI.BusinessObjects.Olap.Level level in report.Schema.Levels) { if(timeRangeLevelUn==level.UniqueName) if(level.Hierarchy.Axis.Ordinal!=2) { level.Hierarchy.DataMembers.Clear(); level.Hierarchy.CalculatedMembers.Clear(); FI.BusinessObjects.Olap.CalculatedMemberTemplates.FilteredByNameSet timeRangeMem=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.FilteredByNameSet( null, level.Hierarchy , level , (string)row["rpt_time_range_start"] , (string)row["rpt_time_range_end"]); timeRangeMem.Prompt=(bool)row["rpt_time_range_prompt"]; level.Hierarchy.CalculatedMembers.Add(timeRangeMem, true); } } // add percentage measures // rpt_percentage_type, rpt_percentage_dim, rpt_percentage_measure if(row["rpt_percentage_type"].ToString()=="1") // ratio to vis sum { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr( null, measuresHier , measure , ratioHier, FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.SUM); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="2") // ratio to vis avg { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr( null, measuresHier , measure , ratioHier, FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.AVG); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="3") // ratio to vis min { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr( null, measuresHier , measure , ratioHier, FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.MIN); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="4") // ratio to vis max { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToVisAggr( null, measuresHier , measure , ratioHier, FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.MAX); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="5") // ratio to parent { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToParent newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToParent( null, measuresHier , measure , ratioHier); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="6") // ratio to all { FI.BusinessObjects.Olap.Hierarchy ratioHier=report.Schema.Hierarchies[(string)row["rpt_percentage_dim"]]; FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; if(ratioHier!=null && measuresHier!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToAll newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MemToAll( null, measuresHier , measure , ratioHier); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } else if(row["rpt_percentage_type"].ToString()=="7") // ratio to measure { FI.BusinessObjects.Olap.Hierarchy measuresHier=report.Schema.Hierarchies["[Measures]"]; // in order to get schema members if(measuresHier.IsOpen==false) { measuresHier.Open(); measuresHier.Close(); } FI.BusinessObjects.Olap.SchemaMember ratioMeasure=measuresHier.SchemaMembers.Find((string)row["rpt_percentage_measure"]); if(ratioMeasure!=null) { System.Collections.ArrayList listNewMems=new System.Collections.ArrayList(); foreach(FI.BusinessObjects.Olap.DataMember measure in measuresHier.DataMembers) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.MeasureToMeasure newMeasure=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.MeasureToMeasure( null, measuresHier , measure , ratioMeasure, FI.BusinessObjects.Olap.CalculatedMemberTemplates.MeasureToMeasure.Operations.DIVIDE ); listNewMems.Add(newMeasure); } measuresHier.DataMembers.Clear(); measuresHier.CalculatedMembers.Clear(); foreach(FI.BusinessObjects.Olap.DataMember newMeasure in listNewMems) measuresHier.AddMember(newMeasure, true); } } // add visual aggregate measures // rpt_sum_dims, rpt_avg_dims, rpt_min_dims, rpt_max_dims strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_sum_dims"] , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); if(strHier=="") continue; foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(hier.UniqueName==strHier && hier.Axis.Ordinal!=2) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate visAggrMem=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate( null, hier , FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.SUM); hier.AddMember(visAggrMem, true); } } strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_avg_dims"] , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); if(strHier=="") continue; foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(hier.UniqueName==strHier && hier.Axis.Ordinal!=2) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate visAggrMem=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate( null, hier , FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.AVG); hier.AddMember(visAggrMem, true); } } strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_min_dims"] , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); if(strHier=="") continue; foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(hier.UniqueName==strHier && hier.Axis.Ordinal!=2) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate visAggrMem=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate( null, hier , FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.MIN); hier.AddMember(visAggrMem, true); } } strHiers=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_max_dims"] , System.Text.RegularExpressions.Regex.Escape("$~$") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); for(int i=0;i<strHiers.Length;i++) { string strHier=strHiers[i].Trim(); if(strHier=="") continue; foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Schema.Hierarchies) if(hier.UniqueName==strHier && hier.Axis.Ordinal!=2) { FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate visAggrMem=new FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate( null, hier , FI.BusinessObjects.Olap.CalculatedMemberTemplates.VisualAggregate.AggregateFunction.MAX); hier.AddMember(visAggrMem, true); } } // empty, non-empty axes // rpt_empty_rows, rpt_empty_cols, rpt_nonempty_rows, rpt_nonempty_cols if((bool)row["rpt_nonempty_rows"]==true) //confused in old version report.Axes[1].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.HIDE_EMPTY; else if((bool)row["rpt_empty_rows"]==true) report.Axes[1].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.HIDE_NONEMPTY; else report.Axes[1].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.NONE; if((bool)row["rpt_nonempty_cols"]==true) //confused in old version report.Axes[0].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.HIDE_EMPTY; else if((bool)row["rpt_empty_cols"]==true) report.Axes[0].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.HIDE_NONEMPTY; else report.Axes[0].EmptyTupleOption=FI.BusinessObjects.Olap.Axis.EmptyTupleOptionEnum.NONE; // order , order tuple - last , after all calc members added // rpt_order, rpt_order_tuple // NOTE : percentage measures are not translated , so they cannot be ordered string[] strOrderMems=System.Text.RegularExpressions.Regex.Split( (string)row["rpt_order_tuple"] , System.Text.RegularExpressions.Regex.Escape("],[") , System.Text.RegularExpressions.RegexOptions.IgnoreCase); string strOrder=(string)row["rpt_order"]; if(strOrder=="BASC") report.Axes[0].Order=FI.BusinessObjects.Olap.Axis.OrderEnum.BASC; // columns only in old reports if(strOrder=="BDESC") report.Axes[0].Order=FI.BusinessObjects.Olap.Axis.OrderEnum.BDESC; // columns only in old reports if(report.Axes[0].Order!=FI.BusinessObjects.Olap.Axis.OrderEnum.NONE) foreach(FI.BusinessObjects.Olap.Hierarchy hier in report.Axes[0].Hierarchies) // columns only in old reports { for(int i=0;i<strOrderMems.Length;i++) { string orderMem=strOrderMems[i]; if(orderMem.StartsWith("[")==false) orderMem="[" + orderMem; if(orderMem.EndsWith("]")==false) orderMem=orderMem + "]"; // change old-styled visual aggregate names orderMem=orderMem.Replace("[** SUM **]" , "[*VIS SUM*]"); orderMem=orderMem.Replace("[** AVG **]" , "[*VIS AVG*]"); orderMem=orderMem.Replace("[** MIN **]" , "[*VIS MIN*]"); orderMem=orderMem.Replace("[** MAX **]" , "[*VIS MAX*]"); if(hier.DataMembers[orderMem]!=null) { hier.OrderTupleMember=orderMem; break; } } } // save report report.SaveState(); report.Close(true); } // update shared reports cmd=con.CreateCommand(); cmd.CommandText=@" UPDATE child SET child.data=parent.data FROM DBFINF.dbo.t_olap_reports parent , DBFINF.dbo.t_olap_reports child WHERE child.parent_report_id=parent.id "; cmd.ExecuteNonQuery(); }
private void LoadParameters() { decimal userId=-1; decimal reportId=-1; int reportType=-1; try { userId=decimal.Parse(Request.QueryString["userId"]); reportId=decimal.Parse(Request.QueryString["rptid"]); reportType=int.Parse(Request.QueryString["rptType"]); Session[this.UniqueID + ":UserId"]=userId; Session[this.UniqueID + ":ReportId"]=reportId; Session[this.UniqueID + ":ReportType"]=reportType; } catch { //do nothing } userId=(decimal)Session[this.UniqueID + ":UserId"]; reportId=(decimal)Session[this.UniqueID + ":ReportId"]; reportType=(int)Session[this.UniqueID + ":ReportType"]; _userProxy = new FI.BusinessObjects.User(userId, true); //not a proxy cause oltp db name is required _reportProxy=_userProxy.ReportSystem.GetReport(reportId , _userProxy.ReportSystem.GetReportType(reportType) , false); }