本人刚接触水晶报表不久,所以问的问题可能比较菜。
最近根据在网上的资料,在一个WEB 窗体隐藏类的 Page_Load 里面写了如下代码:
如能对解决问题有帮助一定给分,如不够再加// 在此处放置用户代码以初始化页面
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
//这里必须事先申明一个ReportDocument对象 Report,同时加载数据报表
ReportDocument oRpt = new ReportDocument();
//获取.rpt文件真实路径
string path;
path=Server.MapPath ("\\skw_tl_test\\CrystalReport1.rpt");
oRpt.Load (path);
//从web.config中获取logOnInfo参数信息
string a,b,c,d;
//获取ServerName
a="127.0.0.1";
//获取DatabaseName
b="skw";
//获取UserId
c="sa";
//获取password
d="admin";
//设置logOnInfo参数
logOnInfo.ConnectionInfo.ServerName = a;
logOnInfo.ConnectionInfo.DatabaseName = b;
logOnInfo.ConnectionInfo.UserID = c;
logOnInfo.ConnectionInfo.Password = d;
string strConn="server="+a+";uid="+c+";pwd="+d+";database="+b;
SqlConnection conn=new SqlConnection(strConn);
oRpt.Database.Tables [0].ApplyLogOnInfo (logOnInfo);
// 声明将参数传递给
//查看器控件所需的变量。
ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();
ParameterField paramField1 = new ParameterField ();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
ParameterRangeValue rangeVal = new ParameterRangeValue ();
ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue ();
// 第一个参数是具有多个值的离散参数。
// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "start";
// 设置第一个离散值并将其传递给该参数。
discreteVal.Value =Request.QueryString["start"];
paramField.CurrentValues.Add (discreteVal);
// 将该参数添加到参数字段集合。
paramFields.Add (paramField);
// 将参数字段集合放入查看器控件。
paramField1.ParameterFieldName = "end";
discreteVal1.Value = Request.QueryString["end"];
paramField1.CurrentValues.Add (discreteVal1);
paramFields.Add (paramField1);
rpt.ParameterFieldInfo = paramFields;
//建立.rpt文件与CryStalReportviewer文件之间的连接
rpt.ReportSource = oRpt;
rpt.DataBind();但是运行结果如下:
 “/skw_tl_test”应用程序中的服务器错误。
--------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 74:  paramField1.CurrentValues.Add (discreteVal1);
行 75:  paramFields.Add (paramField1);
行 76:  rpt.ParameterFieldInfo = paramFields;
行 77:  //建立.rpt文件与CryStalReportviewer文件之间的连接
行 78:  rpt.ReportSource = oRpt;
 
问题有如下几个:
1,当然是为什么会出现这样的错误了。。
2,SqlConnection conn=new SqlConnection(strConn); 这句话不知道是干什么的。
3,discreteVal.Value =Request.QueryString["start"];和discreteVal1.Value =               Request.QueryString["end"]; 是 做什么用的。。