Showing posts with label SSRS Files. Show all posts
Showing posts with label SSRS Files. Show all posts

Friday, 26 June 2015

SSRS Report in ASP.NET Example

Following steps are given to create a SSRS(RDLC) Report in ASP.NET



1)      Create table "UserList" in Database

2)      Create Connection String in Web.Config
<connectionStrings>
    <add name="constr" connectionString="<Databaseconnection>" ProviderName="System.Data.SqlClient"/>
</connectionStrings>

3)      Add httphandler to web.config.
<system.web>
    <httpHandlers>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*"
      type="Microsoft.Reporting.WebForms.HttpHandler,
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"
      />
    </httpHandlers>
</system.web>
<system.webServer>
    <handlers>
      <add name="ReportViewerWebControlHandler"
      preCondition="integratedMode"
      verb="*" path="Reserved.ReportViewerWebControl.axd"
      type="Microsoft.Reporting.WebForms.HttpHandler,
      Microsoft.ReportViewer.WebForms, Version=10.0.0.0,
      Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      />
    </handlers>
  </system.webServer>

4)      Create empty ASP.NET Application.
5)      Crate Report Folder, Named it “Reports”
6)      Add SSRS Report(.rdlc) in report folder, Named it “MyReport”.
7)      Add Dataset (.xsd) in report folder, Named it “MyReportUser”.
8)      Design Dataset (add Datatable and add column in datatable as same in SQL Table.

9)      Open Myreport.rdlc file and add DataSet “MyReportUser” in Report Data Section.

10)   Design report as per your requirement.

11)   Add script manager and report viewer to aspx page as shown below:
<form id="form1" runat="server">
    <asp:ScriptManager runat="server">
    </asp:ScriptManager>
    <div>
    <rsweb:ReportViewer Width="100%" ShowToolBar="false" ID="rptvMyReport" runat="server">
    </rsweb:ReportViewer>
    </div>
    </form>
12) Add following namespaces

using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using SSRSReportExample.Reports; //To Access Reports folder Dataset

13) Add to Code Behind

string str = ConfigurationManager.ConnectionStrings["constr"].ToString();
        DataSet ds;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                getUserList();//Call report at page load
            }
        }

        private void getUserList()
        {
            SqlConnection con = new SqlConnection();//Create SQL Connection Object
            MyReportUser dsUserList = new MyReportUser();//Create DataSet Object
            try
            {
                con.ConnectionString = str;
                SqlDataAdapter sda = new SqlDataAdapter("select * from UserList", con);
                con.Open();
               
                sda.Fill(dsUserList, "UserList");//bind data to DataSet
                if (dsUserList.Tables[0].Rows.Count > 0)//if bind is successfull then execute
                {
                    rptvMyReport.ProcessingMode = ProcessingMode.Local;
                    rptvMyReport.LocalReport.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc");
                    rptvMyReport.LocalReport.DataSources.Clear();//Clear previous applied Datasource
                    ReportDataSource rptDataSource = new ReportDataSource("UserList", dsUserList.Tables[0]);//Create Report Datasource and add Dataset in it.
                    rptvMyReport.LocalReport.DataSources.Add(rptDataSource);
                }
            }
            catch { }
            finally { con.Close(); }
        }
14) Build your application and check the result.


Wednesday, 11 February 2015

SSRS Download all reports from report server using SQL

Before download of report you have to make some config changes given below

-- Allow advanced options to be changed.

EXEC sp_configure 'show advanced options', 1
GO

-- Update the currently configured value for advanced options.
RECONFIGURE
GO

-- Enable xp_cmdshell

EXEC sp_configure 'xp_cmdshell', 1
GO

-- Update the currently configured value for xp_cmdshell
RECONFIGURE
GO

-- Disallow further advanced options to be changed.

EXEC sp_configure 'show advanced options', 0
GO
-- Update the currently configured value for advanced options.

RECONFIGURE

GO

The following code is for download the reports from report server


DECLARE @FilterReportPath AS VARCHAR(500) = NULL 

DECLARE @FilterReportName AS VARCHAR(500) = NULL

--reports to be downloaded..
DECLARE @OutPath AS VARCHAR(500) = 'C:\\Reports\\Download\'
--Make sure this folder exist in drive
--Used to prepare the dynamic query

DECLARE @TSQL AS NVARCHAR(MAX)

--Simple validation of OutputPath; this can be changed as per ones need.


IF LTRIM(RTRIM(ISNULL(@OutPath,''))) = ''

BEGIN

  SELECT 'Invalid Output Path'

END

ELSE
print @OutPath

BEGIN

   --select * from Catalog
   SET @TSQL = STUFF((SELECT

                      ';EXEC master..xp_cmdshell ''bcp " ' +
                      ' SELECT ' +
                      ' CONVERT(VARCHAR(MAX), ' +
                      '       CASE ' +
                      '         WHEN LEFT(C.Content,3) = 0xEFBBBF THEN STUFF(C.Content,1,3,'''''''') '+
                      '         ELSE C.Content '+
                      '       END) ' +
                      ' FROM ' +
                      ' [ReportServer].[dbo].[Catalog] CL ' +
                      ' CROSS APPLY (SELECT CONVERT(VARBINARY(MAX),CL.Content) Content) C ' +
                      ' WHERE ' +
                      ' CL.ItemID = ''''' + CONVERT(VARCHAR(MAX), CL.ItemID) + ''''' " queryout "' + @OutPath + '' + CL.Name + '.rdl" ' + '-T -c -x'''
                    FROM
                      [ReportServer].[dbo].[Catalog] CL
                    WHERE
                      CL.[Type] = 2 --Report
                      AND '/' + CL.[Path] + '/' LIKE COALESCE('%/%' + @FilterReportPath + '%/%', '/' + CL.[Path] + '/')
                      AND CL.Name LIKE COALESCE('%' + @FilterReportName + '%', CL.Name)
                    FOR XML PATH('')), 1,1,'')

  --Execute the Dynamic Query
  print @TSQL

  EXEC SP_EXECUTESQL @TSQL

END