我的代码如下
 protected void Page_Load(object sender, EventArgs e)
    {        if (!IsPostBack)
        {
            string v_bill_yearmonth = Request.QueryString["bill_yearmonth"];
            string v_telecomm_account = Request.QueryString["telecomm_account"];
            string connectionString = ConfigurationManager.ConnectionStrings["vehicleConnectionString"].ConnectionString;
            string v_bank = "";
            string queryString = "SELECT bank FROM telecomm_account where area='" + Session["area_code"].ToString() + "' and account='" + v_telecomm_account + "'";
            using (SqlConnection connection =
                       new SqlConnection(connectionString))
            {
                SqlCommand command =
                    new SqlCommand(queryString, connection);
                connection.Open();                SqlDataReader reader = command.ExecuteReader();                // Call Read before accessing data.
                while (reader.Read())
                {                    v_bank = reader[0].ToString();
                }                // Call Close when done reading.
                reader.Close();
            }            string v_before_bill_yearmonth = DateTime.Parse(v_bill_yearmonth + "-01").AddMonths(-1).ToString("yyyy-MM");
            string v_before_month_borrow_sum = "", v_before_month_lend_sum = "", v_before_year_borrow_sum = "", v_before_year_lend_sum = "", v_this_month_borrow_sum = "", v_this_month_lend_sum = "", v_this_year_borrow_sum = "", v_this_year_lend_sum = "";
            queryString = "select borrow_month_sum,lend_month_sum,borrow_year_sum,lend_year_sum from bill_telecomm_sum where area='" + Session["area_code"].ToString() + "' and month='" + v_before_bill_yearmonth + "'";
            using (SqlConnection connection =
                       new SqlConnection(connectionString))
            {
                SqlCommand command =
                    new SqlCommand(queryString, connection);
                connection.Open();                SqlDataReader reader = command.ExecuteReader();                // Call Read before accessing data.
                while (reader.Read())
                {                    v_before_month_borrow_sum = reader[0].ToString();
                    v_before_month_lend_sum = reader[1].ToString();
                    v_before_year_borrow_sum = reader[2].ToString();
                    v_before_year_lend_sum = reader[3].ToString();
                }                // Call Close when done reading.
                reader.Close();
            }          
            //TextObject tb = (TextObject)ReportDoc.ReportDefinition.ReportObjects["TextBillYearmonth"];
            //tb.Text = v_bill_yearmonth;
            queryString =
                    "SELECT exchange_date,exchange_site,borrow_money,lend_money,bill_yearmonth,exchange_type FROM bill_telecomm where area='" + Session["area_code"].ToString() +
                    "' and telecomm_account='" + v_telecomm_account + "' and bill_yearmonth='" + v_bill_yearmonth + "' order by exchange_site,exchange_date";            DataSet ds = new DataSet();            try
            {
                // Connect to the database and run the query.
                SqlConnection connection = new SqlConnection(connectionString);
                SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);                // Fill the DataSet.
                adapter.Fill(ds, "bill_telecomm");
                //CrystalReportSource1.ReportDocument.SetDataSource(ds);
                //CrystalReportSource1.DataBind();
                ParameterFields paraFields = new ParameterFields();
                ParameterField[] paraField = new ParameterField[8];
                ParameterDiscreteValue[] discreteValue = new ParameterDiscreteValue[8];
                ParameterRangeValue rangeValue = new ParameterRangeValue();
                paraField[0] = new ParameterField();
                paraField[0].ParameterFieldName = "bank_name";
                discreteValue[0] = new ParameterDiscreteValue();
                discreteValue[0].Value = v_bank;// "工商银行";// (string)Session["Name"];
                paraField[0].CurrentValues.Add(discreteValue[0]);
                paraField[1] = new ParameterField();
                paraField[1].ParameterFieldName = "telecomm_account";
                discreteValue[1] = new ParameterDiscreteValue();
                discreteValue[1].Value = v_telecomm_account;
                paraField[1].CurrentValues.Add(discreteValue[1]);                paraField[2] = new ParameterField();
                paraField[2].ParameterFieldName = "before_month_borrow_sum";
                discreteValue[2] = new ParameterDiscreteValue();
                discreteValue[2].Value = v_before_month_borrow_sum;
                paraField[2].CurrentValues.Add(discreteValue[2]);                paraField[3] = new ParameterField();
                paraField[3].ParameterFieldName = "before_month_lend_sum";
                discreteValue[3] = new ParameterDiscreteValue();
                discreteValue[3].Value = v_before_month_lend_sum;
                paraField[3].CurrentValues.Add(discreteValue[3]);                paraField[4] = new ParameterField();
                paraField[4].ParameterFieldName = "before_year_borrow_sum";
                discreteValue[4] = new ParameterDiscreteValue();
                discreteValue[4].Value = v_before_year_borrow_sum;
                paraField[4].CurrentValues.Add(discreteValue[4]);                paraField[5] = new ParameterField();
                paraField[5].ParameterFieldName = "before_year_lend_sum";
                discreteValue[5] = new ParameterDiscreteValue();
                discreteValue[5].Value = v_before_year_borrow_sum;
                paraField[5].CurrentValues.Add(discreteValue[5]);
                foreach (ParameterField pf in paraField)
                {
                    paraFields.Add(pf);
                }                ReportDocument rptdoc = new ReportDocument();
                rptdoc.Load(Server.MapPath("./CrystalReport1.rpt"));
                rptdoc.SetDataSource(ds);                CrystalReportViewer1.ReportSource = rptdoc;
                CrystalReportViewer1.ParameterFieldInfo = paraFields;
                CrystalReportViewer1.DataBind();
                // CrystalReportViewer1.RefreshReport();
            }
            catch (Exception)
            {                // The connection failed. Display an error message.
                status.Text = "Unable to connect to the database.";            }        }
    }
本代码第一页显示正常,但是翻页、打印、导出时报错如下
登录失败。详细资料: crdb_adoplus : 未将对象引用设置到对象的实例。文件 C:\DOCUME~1\920172\LOCALS~1\Temp\CrystalReport1 {8737FC64-A9AA-4256-8FDF-B6BF90443E14}.rpt 内出错:无法连接:错误的登录参数。                       2 / 2+          主报表     
  因帖子字数限制,我去出了一部分重复的代码