CrystalReportViewer1.Visible=true;
//多表连接的数据源,要用查询来做数据源
// SqlConnection mConn = new SqlConnection("user id=sa;password=shchiang;initial catalog=newsalary;data source=172.18.4.9");
// //SqlDataAdapter mAda = new SqlDataAdapter("SELECT salary.*,employee.*,statistic.* FROM salary , employee ,statistic where salary.eno = employee.eno and statistic.eno=employee.eno and statistic.yyear=salary.year and statistic.mmonth=salary.month ",mConn);
//SqlDataAdapter mAda = new SqlDataAdapter("SELECT salary.*,employee.* FROM salary , employee where salary.eno = employee.eno  ",mConn);
// DataSet myDs = new DataSet();
// mAda.Fill(myDs,"test");
// CrystalDecisions.CrystalReports.Engine.ReportDocument crReport = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
// //报表文件依然需要
String path;
ReportDocument oRpt = new ReportDocument();
path=Server.MapPath("Reportselect.rpt"); 
oRpt.Load (path);
//oRpt.SetDataSource(myDs);

       
//从web.config中获取logOnInfo参数信息
string a,b,c,d;
//获取ServerName
a=System.Configuration .ConfigurationSettings .AppSettings ["servername"];
//获取DatabaseName
b=System.Configuration .ConfigurationSettings .AppSettings ["database"];
//获取UserId
c=System.Configuration .ConfigurationSettings .AppSettings ["userid"];
//获取password
d=System.Configuration .ConfigurationSettings .AppSettings ["pass"];
//设置logOnInfo参数 ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
ParameterDiscreteValue rangeVal = new  ParameterDiscreteValue (); // 第一个参数是具有多个值的离散参数。 // 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "yyear"; // 设置第一个离散值并将其传递给该参数。
discreteVal.Value = ddl_year.SelectedItem.Text.ToString();
paramField.CurrentValues.Add (discreteVal);
// 将该参数添加到参数字段集合。
paramFields.Add (paramField); // 第二个参数为区域值。paramField 变量
//被设置为新值,这样,以前的设置就不会被覆盖。
paramField = new ParameterField (); // 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "mmonth"; // 设置范围的开始值和结束值并将该范围传递给
//该参数。
rangeVal.Value=ddl_month.SelectedItem.Text.ToString();

paramField.CurrentValues.Add (rangeVal); // 将第二个参数添加到参数字段集合。
paramFields.Add (paramField); // 将参数字段集合放入查看器控件。
CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.ReportSource = oRpt;
CrystalReportViewer1.DataBind();

解决方案 »

  1.   

    if(!Page.IsPostBack)
    {

    TableLogOnInfo logOnInfo = new TableLogOnInfo ();
    ReportDocument oRpt = new ReportDocument();
    string path;
    path=Server.MapPath ("test2.rpt");
    oRpt.Load (path);
    string a,b,c,d;
    a=System.Configuration.ConfigurationSettings.AppSettings ["servername"];
    b=System.Configuration.ConfigurationSettings.AppSettings ["database"];
    c=System.Configuration.ConfigurationSettings.AppSettings ["userid"];
    d=System.Configuration.ConfigurationSettings.AppSettings ["pass"];
    logOnInfo.ConnectionInfo.ServerName = a;
    logOnInfo.ConnectionInfo.DatabaseName = b;
    logOnInfo.ConnectionInfo.UserID = c;
    logOnInfo.ConnectionInfo.Password = d;

    oRpt.Database.Tables [0].ApplyLogOnInfo (logOnInfo);
    crv1.ReportSource = oRpt; string ssxmjlb=Request.QueryString["sxmjlb"].ToString();
    string ssxmmc=Request.QueryString["sxmmc"].ToString();
    string ssifwc=Request.QueryString["ifwc"].ToString();
    ParameterFields paramFields = new ParameterFields();
    ParameterField paramField1 = new ParameterField();  
    ParameterField paramField2 = new ParameterField();
    ParameterField paramField3 = new ParameterField();
    ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue();
    ParameterDiscreteValue discreteVal2 = new ParameterDiscreteValue();
    ParameterDiscreteValue discreteVal3 = new ParameterDiscreteValue(); paramField1.ParameterFieldName = "sxmjlb";  
    discreteVal1.Value = ssxmjlb;  
    paramField1.CurrentValues.Add(discreteVal1);
    paramFields.Add(paramField1);
     
    paramField2 = new ParameterField();
    paramField2.ParameterFieldName = "sxmmc";
    discreteVal2.Value = ssxmmc;  
    paramField2.CurrentValues.Add(discreteVal2);
    paramFields.Add(paramField2);   paramField3 = new ParameterField();
    paramField3.ParameterFieldName = "sifwc";
    discreteVal3.Value = ssifwc;
    paramField3.CurrentValues.Add(discreteVal3);
    paramFields.Add(paramField3);    crv1.ParameterFieldInfo = paramFields;

    crv1.DisplayGroupTree = false;
    crv1.DisplayToolbar = false;
    DataBind();
    }
      

  2.   

    http://www.csdn.net/develop/MY_article.asp?author=haibodotnet