2
Answers

Create Report in which columns are not predefined.

Hi friends i want to Create a report which columns will dynamic from stored procedure.I mean i can't predefined no of columns in my report.If my Stored Procedure's query contains 5 columns then 5 column should be display in report,if query contain 10 columns then report should display 10 columns.So my question is which report i should use.I should use RDLC,RDL,Crystal or any other ?? Please reply.thanks in advance.I am using VS 2010,Sql Server 2008 R2.
Answers (2)
2
Fadugba Jeremiah

Fadugba Jeremiah

NA 74 7.5k 11y
use RDLC it worked for me
Accepted
0
Surendrasinh Rathod

Surendrasinh Rathod

NA 75 20.3k 11y
Thanks FADUGBA JEREMIAH,I have crete RDLC runtime and save the xml code of dynamically generated rdlc in DetailReport.rdlc .Now my problem is on top of winform i have keep one ComboBox,from which i can select which data i have to display in report.For first selected item it display report,then after it doesn't show report.

My code is as follow:
 private void btnShow_Click(object sender, EventArgs e)
        {
            ReportViewer1.Reset();
            ReportViewer1.LocalReport.DataSources.Clear();

            string dsName = comboBox1.Text;
            #region SQL
            DataTable dt = new DataTable();
            SqlConnection con = new SqlConnection("Data Source=SERVER;Initial Catalog=Test;User ID=sa;Password=sa");
            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo." + dsName, con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            #endregion
            ReportGenerator gen = new ReportGenerator(dt, dsName);
            ds = new ReportDataSource(dsName, dt);
            string xml = gen.GeneraReport();

            XmlDocument xDoc = new XmlDocument();
            xDoc.LoadXml(xml);
            
            xDoc.Save(@"D:\\Surendra\\SSRS\\SSRS\\DetailReport.rdlc");
            
           
            ReportViewer1.LocalReport.ReportEmbeddedResource = "SSRS.MainReport.rdlc";
            ReportViewer1.LocalReport.DisplayName = "Main Report";
           
            ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
            this.ReportViewer1.RefreshReport();

        }

        void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
        {
            if (e.ReportPath == "DetailReport")
                e.DataSources.Add(ds);
        }