public RSExecutionInfo2 SetExecutionCredentials2(RSDataSourceCredentials[] Credentials)
        {
            DataSourceCredentials[] dsCredentials = (DataSourceCredentials[])Converter.Convert(Credentials);
            ExecutionInfo2          outval        = rs.SetExecutionCredentials2(dsCredentials);

            return((RSExecutionInfo2)Converter.Convert(outval));
        }
        public RSExecutionInfo2 SetExecutionParameters2(RSParameterValue[] Parameters, string ParameterLanguage)
        {
            ParameterValue[] paramValues = (ParameterValue[])Converter.Convert(Parameters);
            ExecutionInfo2   outval      = rs.SetExecutionParameters2(paramValues, ParameterLanguage);

            return((RSExecutionInfo2)Converter.Convert(outval));
        }
        public void ItReturnsTheParametersFromThePromptService2()
        {
            const string promptName       = "Prompt Name";
            const string path             = "Path";
            const string promptReportName = "Prompt Report Name";
            var          parmaterValues   = A.Array(A.ParameterValue().Build(), A.ParameterValue().Build());
            var          parameters       = A.Array(A.ReportParameter().Build(), A.ReportParameter().Build());
            var          executionInfo    = new ExecutionInfo2 {
                Parameters = parameters
            };

            _promptReportNameParser
            .Setup(p => p.Parse(promptName))
            .Returns(promptReportName);

            _reportServerFolder
            .Setup(f => f.GetFullPathFor(promptReportName))
            .Returns(path);

            _reportExecutionService
            .Setup(s => s.SetExecutionParameters2(parmaterValues, null))
            .Returns(executionInfo);

            var serviceParameters = _parameterSerivce.GetParametersFor(promptName, parmaterValues);

            _reportExecutionService.Verify(s => s.LoadReport2(path, null), Times.Exactly(1));

            Assert.AreEqual(parameters, serviceParameters);
        }
        public byte[][] RenderReport(string reportPath, int id, string docType, short paperSize, bool save)
        {
            string historyID  = null;
            string deviceInfo = "";

            //@"<DeviceInfo><DpiX>300</DpiX><DpiY>300</DpiY></DeviceInfo> ";
            Byte[]       results;
            const string format    = "IMAGE";
            string       encoding  = String.Empty;
            string       mimeType  = String.Empty;
            string       extension = String.Empty;

            Warning[] warnings  = null;
            string[]  streamIDs = null;

            System.Collections.Generic.List <byte[]> list = new System.Collections.Generic.List <byte[]>();
            try
            {
                ParameterValue[] rp = new ParameterValue[2];
                rp.SetValue(new ParameterValue {
                    Name = "id", Value = id.ToString()
                }, 0);
                rp.SetValue(new ParameterValue {
                    Name = "DT", Value = DateTime.Now.ToString()
                }, 1);
                ei = res.LoadReport(reportPath, historyID);
                res.SetExecutionParameters(rp, "ru-ru");
                int page = 0;
                while (true)
                {
                    deviceInfo = string.Format(@"<DeviceInfo><OutputFormat>{0}</OutputFormat><PrintDpiX>300</PrintDpiX><PrintDpiY>300</PrintDpiY><StartPage>{1}</StartPage></DeviceInfo>", docType, ++page);
                    results    = res.Render(format, deviceInfo,
                                            out extension, out encoding,
                                            out mimeType, out warnings, out streamIDs);
                    ExecutionInfo2 ei2 = res.GetExecutionInfo2();
                    if (results != null && results.Length > 0)
                    {
                        list.Add(results);
                    }
                    else
                    {
                        break;
                    }
                }
                m_numberOfPages = list.Count;
                if (m_numberOfPages > 0)
                {
                    return(list.ToArray());
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw new Kesco.Lib.Log.DetailedException(ex.Message, ex, Kesco.Lib.Log.Priority.ExternalError, string.Format("Parameters - reportPath (URL): {0} DocumentID: {1} DocumentType: {2}", reportPath, id, docType));
            }
        }
        public RSExecutionInfo2 LoadReportDefinition2([System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] byte[] Definition, out RSWarning[] warnings)
        {
            Warning[]      warns  = null;
            ExecutionInfo2 outval = rs.LoadReportDefinition2(Definition, out warns);

            warnings = (RSWarning[])Converter.Convert(warns);
            return((RSExecutionInfo2)Converter.Convert(outval));
        }
        public int Sort2(string SortItem, RSSortDirectionEnum Direction, bool Clear, RSPageCountMode PaginationMode, out string ReportItem, out RSExecutionInfo2 ExecutionInfo)
        {
            SortDirectionEnum direction      = (SortDirectionEnum)Converter.Convert(Direction);
            PageCountMode     paginationMode = (PageCountMode)Converter.Convert(PaginationMode);
            ExecutionInfo2    execInfo       = null;
            int outval = rs.Sort2(SortItem, direction, Clear, paginationMode, out ReportItem, out execInfo);

            ExecutionInfo = (RSExecutionInfo2)Converter.Convert(execInfo);
            return(outval);
        }
        public void ItGetsTheParametersFromTheReportExecutionServiceUsingThePath()
        {
            const string path = "Path";

            var serviceParameters = A.Array(A.ReportParameter().Build(), A.ReportParameter().Build());
            var exectuionInfo     = new ExecutionInfo2 {
                Parameters = serviceParameters
            };

            _reportExecutionService.Setup(s => s.LoadReport2(path, null)).Returns(exectuionInfo);

            var parameters = _parameterService.GetParametersFor(path);

            Assert.AreEqual(serviceParameters, parameters);
        }
示例#8
0
        private static ExecutionInfo FromSoapExecutionInfo(Microsoft.Reporting.WinForms.Internal.Soap.ReportingServices2005.Execution.ExecutionInfo soapExecutionInfo)
        {
            if (soapExecutionInfo == null)
            {
                return(null);
            }
            ReportParameterInfoCollection reportParameterInfoCollection = null;

            Microsoft.Reporting.WinForms.Internal.Soap.ReportingServices2005.Execution.ReportParameter[] parameters = soapExecutionInfo.Parameters;
            if (parameters != null)
            {
                ReportParameterInfo[] array = new ReportParameterInfo[parameters.Length];
                for (int i = 0; i < parameters.Length; i++)
                {
                    array[i] = SoapParameterToReportParameterInfo(parameters[i]);
                }
                reportParameterInfoCollection = new ReportParameterInfoCollection(array);
            }
            else
            {
                reportParameterInfoCollection = new ReportParameterInfoCollection();
            }
            PageCountMode  pageCountMode = PageCountMode.Actual;
            ExecutionInfo2 executionInfo = soapExecutionInfo as ExecutionInfo2;

            if (executionInfo != null && executionInfo.PageCountMode == Microsoft.Reporting.WinForms.Internal.Soap.ReportingServices2005.Execution.PageCountMode.Estimate)
            {
                pageCountMode = PageCountMode.Estimate;
            }
            ParametersPaneLayout parametersPaneLayout = null;
            ExecutionInfo3       executionInfo2       = soapExecutionInfo as ExecutionInfo3;

            if (executionInfo2 != null && executionInfo2.ParametersLayout != null && parameters != null)
            {
                parametersPaneLayout = new ParametersPaneLayout();
                SoapExecutionInfoToParametersLayout(parametersPaneLayout, executionInfo2, reportParameterInfoCollection);
            }
            ReportPageSettings pageSettings = new ReportPageSettings(soapExecutionInfo.ReportPageSettings.PaperSize.Height, soapExecutionInfo.ReportPageSettings.PaperSize.Width, soapExecutionInfo.ReportPageSettings.Margins.Left, soapExecutionInfo.ReportPageSettings.Margins.Right, soapExecutionInfo.ReportPageSettings.Margins.Top, soapExecutionInfo.ReportPageSettings.Margins.Bottom);

            return(new ExecutionInfo(soapExecutionInfo.ExecutionID, soapExecutionInfo.HistoryID, soapExecutionInfo.ReportPath, soapExecutionInfo.NumPages, soapExecutionInfo.HasDocumentMap, soapExecutionInfo.AutoRefreshInterval, soapExecutionInfo.CredentialsRequired, soapExecutionInfo.ParametersRequired, soapExecutionInfo.HasSnapshot, soapExecutionInfo.NeedsProcessing, soapExecutionInfo.ExpirationDateTime, soapExecutionInfo.AllowQueryExecution, pageCountMode, ReportDataSourceInfoCollection.FromSoapDataSourcePrompts(soapExecutionInfo.DataSourcePrompts), reportParameterInfoCollection, pageSettings, parametersPaneLayout));
        }
        public int Sort(string SortItem, SortDirectionEnum Direction, bool Clear, PageCountMode PaginationMode, out string ReportItem, out ExecutionInfo ExecutionInfo, out int NumPages)
        {
            string            rptItem       = null;
            int               nPages        = 0;
            ExecutionInfo2    execInfo      = null;
            ProxyMethod <int> initialMethod = new ProxyMethod <int>("Sort2", delegate
            {
                int result2 = Sort2(SortItem, Direction, Clear, PaginationMode, out rptItem, out execInfo);
                if (execInfo != null)
                {
                    nPages = execInfo.NumPages;
                }
                return(result2);
            });
            ProxyMethod <int> retryMethod = new ProxyMethod <int>("Sort", () => base.Sort(SortItem, Direction, Clear, out rptItem, out nPages));
            int result = ProxyMethodInvocation.Execute(this, initialMethod, retryMethod);

            ExecutionInfo = execInfo;
            NumPages      = nPages;
            ReportItem    = rptItem;
            return(result);
        }
        public FileContentResult Index()
        {
            Dictionary <string, string> reportParameters = new Dictionary <string, string>();

            Request.QueryString.AllKeys.Where(x => !x.Equals("ReportName")).ForEach(x => reportParameters.Add(x, Request.QueryString[x]));

            byte[] byteResult = new byte[0];
            string extension, mimeType, encoding;

            Warning[]        warnings  = new Warning[0];
            string[]         streamIds = new string[0];
            ServerInfoHeader serverInfoHeader;
            ExecutionInfo2   execInfo = new ExecutionInfo2();
            ReportExecutionServiceSoapClient rsServiceClient = new ReportExecutionServiceSoapClient();

            rsServiceClient.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
            ExecutionHeader execHeader = rsServiceClient.LoadReport2(null, "/Axis.ReportDB/" + Request.QueryString["ReportName"], null,
                                                                     out serverInfoHeader, out execInfo);

            rsServiceClient.SetExecutionParameters2(execHeader, null,
                                                    reportParameters.Select(x => new ParameterValue {
                Name = x.Key, Value = x.Value
            }).ToArray(), "en-us",
                                                    out execInfo);
            string sessionId = execInfo.ExecutionID;

            try
            {
                serverInfoHeader = rsServiceClient.Render2(execHeader, null, "PDF", @"<DeviceInfo><Toolbar>True</Toolbar></DeviceInfo>", PageCountMode.Actual, out byteResult, out extension, out mimeType, out encoding, out warnings, out streamIds);
            }
            catch (Exception)
            {
                throw;
            }
            return(new FileContentResult(byteResult, "application/pdf"));
        }
        public RSExecutionInfo2 LoadReport2(string Report, string HistoryID)
        {
            ExecutionInfo2 outval = rs.LoadReport2(Report, HistoryID);

            return((RSExecutionInfo2)Converter.Convert(outval));
        }
 public int Sort2(string SortItem, SortDirectionEnum Direction, bool Clear, PageCountMode PaginationMode, out string ReportItem, out ExecutionInfo2 ExecutionInfo)
 {
     object[] results = this.Invoke("Sort2", new object[] {
                 SortItem,
                 Direction,
                 Clear,
                 PaginationMode});
     ReportItem = ((string)(results[1]));
     ExecutionInfo = ((ExecutionInfo2)(results[2]));
     return ((int)(results[0]));
 }
 /// <remarks/>
 public int EndSort2(System.IAsyncResult asyncResult, out string ReportItem, out ExecutionInfo2 ExecutionInfo)
 {
     object[] results = this.EndInvoke(asyncResult);
     ReportItem = ((string)(results[1]));
     ExecutionInfo = ((ExecutionInfo2)(results[2]));
     return ((int)(results[0]));
 }
示例#14
0
    private string GenerateReport(Dictionary <string, string> dictParam, bool bGetImagePath, bool preservecomments, string Report_Name)
    {
        string   reportPath      = string.Empty;
        string   sReportFileName = string.Empty;
        FileInfo fi = null;

        reportPath = SSRSLibrary + "/" + Report_Name;

        SSRS.ReportExecutionService rs1 = new SSRS.ReportExecutionService();
        rs1.Credentials = new System.Net.NetworkCredential(ClientConfiguration.WebServiceUserName, ClientConfiguration.WebServicePWD, ClientConfiguration.WebServiceUserDomain);

        ExecutionInfo2 execInfo = new ExecutionInfo2();

        execInfo = rs1.LoadReport2(reportPath, null);
        Int32 counter = 0;


        SSRS.ParameterValue[] parameters = new SSRS.ParameterValue[dictParam.Count];
        foreach (KeyValuePair <string, string> kvp in dictParam)
        {
            Console.WriteLine("Key = {0}, Value = {1}",
                              kvp.Key, kvp.Value);

            // Prepare report parameters

            parameters[counter]       = new SSRS.ParameterValue();
            parameters[counter].Name  = kvp.Key;
            parameters[counter].Value = kvp.Value;
            counter = counter + 1;
        }
        rs1.SetExecutionParameters2(parameters, null);

        //See Readme for different Types

        // Render arguments
        string encoding;
        string mimeType = "html/text";
        string extension;

        SSRS.Warning[] warnings  = null;
        string[]       streamIDs = null;
        string         format    = "HTML4.0";
        string         devInfo   = null;

        byte[] result = null;

        try
        {
            result   = rs1.Render2(format, devInfo, PageCountMode.Estimate, out extension, out mimeType, out encoding, out warnings, out streamIDs);
            execInfo = rs1.GetExecutionInfo2();

            UTF8Encoding enc = new UTF8Encoding();
            string       str = enc.GetString(result);
            //Hide Logo or parse string for anything
            str = str.Replace("<a", "<a style='display:none' ");
            string s = System.Text.ASCIIEncoding.ASCII.GetString(result);
            SendEmail(str, "*****@*****.**");
        }
        catch (SoapException ex)
        {
            Console.WriteLine(ex.Detail.OuterXml);

            return(string.Empty);
        }

        sReportFileName = Report_Name;

        String ReportName = graphicspath + "\\" + sReportFileName + ".html";

        // Write the contents of the report to an MHTML file.
        fi = new FileInfo(ReportName);
        if (fi.Exists)
        {
            fi.Delete();
        }
        using (FileStream stream = File.Create(ReportName, result.Length))
        {
            stream.Write(result, 0, result.Length);
            stream.Close();
        }

        return(string.Empty);
    }
示例#15
0
    private string GenerateReport(Dictionary<string, string> dictParam, bool bGetImagePath, bool preservecomments, string Report_Name)
    {
        string reportPath = string.Empty;
        string sReportFileName = string.Empty;
        FileInfo fi = null;

        reportPath = SSRSLibrary + "/" + Report_Name;

        SSRS.ReportExecutionService rs1 = new SSRS.ReportExecutionService();
        rs1.Credentials = new System.Net.NetworkCredential(ClientConfiguration.WebServiceUserName, ClientConfiguration.WebServicePWD, ClientConfiguration.WebServiceUserDomain);

        ExecutionInfo2 execInfo = new ExecutionInfo2();
        execInfo = rs1.LoadReport2(reportPath, null);
        Int32 counter = 0;

        SSRS.ParameterValue[] parameters = new SSRS.ParameterValue[dictParam.Count];
        foreach (KeyValuePair<string, string> kvp in dictParam)
        {
            Console.WriteLine("Key = {0}, Value = {1}",
                kvp.Key, kvp.Value);

            // Prepare report parameters

            parameters[counter] = new SSRS.ParameterValue();
            parameters[counter].Name = kvp.Key;
            parameters[counter].Value = kvp.Value;
            counter = counter + 1;
        }
        rs1.SetExecutionParameters2(parameters, null);

        //See Readme for different Types

        // Render arguments
        string encoding;
        string mimeType = "html/text";
        string extension;
        SSRS.Warning[] warnings = null;
        string[] streamIDs = null;
        string format = "HTML4.0";
        string devInfo = null;
        byte[] result = null;

        try
        {

            result = rs1.Render2(format, devInfo, PageCountMode.Estimate, out extension, out mimeType, out encoding, out warnings, out streamIDs);
            execInfo = rs1.GetExecutionInfo2();

            UTF8Encoding enc = new UTF8Encoding();
            string str = enc.GetString(result);
            //Hide Logo or parse string for anything
            str = str.Replace("<a", "<a style='display:none' ");
            string s = System.Text.ASCIIEncoding.ASCII.GetString(result);
            SendEmail(str, "*****@*****.**");

        }
        catch (SoapException ex)
        {
            Console.WriteLine(ex.Detail.OuterXml);

            return string.Empty;
        }

        sReportFileName =Report_Name;

        String ReportName = graphicspath + "\\" + sReportFileName + ".html";
        // Write the contents of the report to an MHTML file.
        fi = new FileInfo(ReportName);
        if (fi.Exists)
        {
            fi.Delete();
        }
        using (FileStream stream = File.Create(ReportName, result.Length))
        {
            stream.Write(result, 0, result.Length);
            stream.Close();
        }

           return string.Empty;
    }
        public RSExecutionInfo2 LoadDrillthroughTarget2(string DrillthroughID)
        {
            ExecutionInfo2 outval = rs.LoadDrillthroughTarget2(DrillthroughID);

            return((RSExecutionInfo2)Converter.Convert(outval));
        }
        public RSExecutionInfo2 GetExecutionInfo2()
        {
            ExecutionInfo2 outval = rs.GetExecutionInfo2();

            return((RSExecutionInfo2)Converter.Convert(outval));
        }