Click here to Skip to main content
15,920,468 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i wrote the following code to create dynamics crystal report.
I am inexperienced guy. i am not getting function of rpt.ReportDefinition.ReportObjects["emp"];.This create error that is index out of bound.

using System;
using System.Data;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.Data.SqlClient;

namespace cbc
    public partial class Form1 : Form
        public Form1()
        ReportDocument rpt = new ReportDocument();
        private void Form1_Load(object sender, EventArgs e)
                crystalReportViewer1.ReportSource = rpt;


        private void btn_refresh_Click(object sender, EventArgs e)
            //Begin: Bind the reports dynamically
            DataTable dtReports = BindReports();
            //End: Bind the reports dynamically
            //Begin: Update the report label value from All to the entered employee name in the text box
            TextObject myTextObjectOnReport;
            if (rpt.ReportDefinition.ReportObjects["emp"] != null)// emp is a database table named.this is error point.
                myTextObjectOnReport = (TextObject)rpt.ReportDefinition.ReportObjects["emp"];
                myTextObjectOnReport.Text = textBox7.Text;
            crystalReportViewer1.ReportSource = rpt;

        //Filtered the report details based on the employee name entered in the textbox 
        private DataTable BindReports()
            //string conString = @"Data Source =WVDI1IHCL32\WVDI1IHCL32;Initial Catalog=Test;Integrated Security=True;";
            SqlConnection con = new SqlConnection("initial catalog=sha;integrated security=yes");
            int empid = Convert.ToInt32(textBox7.Text);
           // string query = "SELECT * FROM emp WHERE id="+empid+" ";
            SqlDataAdapter sqlAdapter = new SqlDataAdapter("SELECT * FROM emp WHERE id=" + textBox7.Text + " ", con);

            DataTable dtReport = new DataTable();

            return dtReport;
Updated 6-Jul-10 20:51pm

1 solution

Well, error must bebecause of missing report object that you are trying to access.

Please have a look at this article for details of how to work with crystal reports dynamically using C#:
Dynamic Crystal Report with C#[^]
Share this answer
Dreamland73 7-Jul-10 3:21am    
thanks for reply.
Please ,can you tell me about the rpt.ReportDefinition.ReportObjects["emp"];.
what will be the argument of ReportObjects[argument];

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900