【问题标题】:Passing multiple parameters to Crystal Report将多个参数传递给 Crystal Report
【发布时间】:2011-02-28 17:03:07
【问题描述】:

我正在开发 Visual Studio 2008 和 SQL Server 2008,语言 C#

我想在 ASP.NET 中将多个参数传递给 Crystal Report。我有两个参数@accountnumber 和@customerid。但我只能将一个参数传递给我的报告,如下面的代码所示。

CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.ServerName = "CJ-PC";
CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.UserID = "sa";
CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.Password = "***";
CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.DatabaseName = "Online";

string accountnumber = "acc001";
string customerID = "cus001";

ParameterField paramField = new ParameterField();
ParameterFields paramFields = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

paramField.Name = "@account_number";
paramDiscreteValue.Value = accountnumber;
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;

ParameterField paramField1 = new ParameterField();
ParameterFields paramFields1 = new ParameterFields();
ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();

paramField1.Name = "@account_number";
paramDiscreteValue1.Value = accountnumber;
paramField1.CurrentValues.Add(paramDiscreteValue1);
paramFields1.Add(paramField1);

paramField1.Name = "@customer_id";
paramDiscreteValue1.Value = customerID;
paramField1.CurrentValues.Add(paramDiscreteValue1);
paramFields1.Add(paramField1);
CrystalReportViewer1.ParameterFieldInfo = paramFields1;

【问题讨论】:

    标签: c# asp.net sql-server parameters crystal-reports


    【解决方案1】:

    在为 paramField1 分配新值之前,您必须使用 new 关键字

    paramField1.Name = "@account_number";
    paramDiscreteValue1.Value = accountnumber;
    paramField1.CurrentValues.Add(paramDiscreteValue1);
    paramFields1.Add(paramField1);
    
    //Here is the missing code
    paramField1 = new ParameterField();
    
    paramField1.Name = "@customer_id";
    paramDiscreteValue1.Value = customerID;
    paramField1.CurrentValues.Add(paramDiscreteValue1);
    paramFields1.Add(paramField1);
    

    【讨论】:

      【解决方案2】:

      如果上述代码对您没有帮助,请按照以下说明进行操作:

      转到CrystalReportSource 属性-> Report 属性-> Paratemers 属性-> Add new parameter

      然后就可以了。您必须将参数命名为 @account_number 并给它一个 ControlID

      【讨论】:

        【解决方案3】:

        这就是我在代码中所做的

        CrystalReportViewer1.RefreshReport();
        
        String ssCustomer = Session["ssCustomer"].ToString();
        string strconstring = ConfigurationManager.ConnectionStrings["ONLINE_BANKING2_ConnectionString"].ConnectionString;
        string sqlquery2;
        sqlquery2 = "SELECT [account_number],[customer_id] from customer_details where customer_id = '" + ssCustomer + "'";
        SqlConnection mycon2 = new SqlConnection(strconstring);
        SqlCommand cmd = new SqlCommand(sqlquery2, mycon2);
        mycon2.Open();
        SqlDataReader myreader = cmd.ExecuteReader();
        myreader.Read();
        string accountnumber = myreader["account_number"].ToString();
        string customerID = myreader["customer_id"].ToString();
        myreader.Close();
        mycon2.Close();
        
        ParameterDiscreteValue objDiscreteValue;
        ParameterField objParameterField;
        
        //specify all the database Login details
        CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.ServerName = "CJ-PC";
        CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.UserID = "sa";
        CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.Password = "123";
        CrystalReportViewer1.LogOnInfo[0].ConnectionInfo.DatabaseName = "online_banking2";
        
        //Set value for first parameter
        objDiscreteValue = new ParameterDiscreteValue();
        objDiscreteValue.Value = accountnumber;
        objParameterField = CrystalReportViewer1.ParameterFieldInfo["@account_number"];
        objParameterField.CurrentValues.Add(objDiscreteValue);
        CrystalReportViewer1.ParameterFieldInfo.Add(objParameterField);
        
        objParameterField = CrystalReportViewer1.ParameterFieldInfo["@customer_id"];
        objDiscreteValue = new ParameterDiscreteValue();
        objDiscreteValue.Value = customerID;
        objParameterField.CurrentValues.Add(objDiscreteValue);
        CrystalReportViewer1.ParameterFieldInfo.Add(objParameterField);
        

        【讨论】:

          【解决方案4】:

          您可以按照这种方式将值传递给Crystal Reports中的各种参数。

          void SetParameterValues()
          {
              crReport report = new crReport();
              report.SetParameterValue("parameterName1","parameterValue1");
              report.SetParameterValue("parameterName2","parameterValue2");
          }
          

          【讨论】:

          • 像这样将值传递给 Crystal Reports 中的各种参数。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-07
          相关资源
          最近更新 更多