水晶报表参数问题

todaywlq 2008-03-31 09:37:46

private void BindCrv()
{
ReportDocument doc = new ReportDocument();

string path = Server.MapPath("CrystalReport1.rpt");
doc.FileName = path;

SqlConnection dbCon = PubClass.GetSqlConnection();
SqlDataAdapter da = new SqlDataAdapter("wsp_report_1", dbCon);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.Add("@hoscode", SqlDbType.VarChar, 20).Value = this.ddlDanw.SelectedValue;
da.SelectCommand.Parameters.Add("@qssj", SqlDbType.DateTime).Value = DateTime.Parse(this.txtRq1.Text + " 00:00:00");
da.SelectCommand.Parameters.Add("@jssj", SqlDbType.DateTime).Value = DateTime.Parse(this.txtRq2.Text + " 23:59:59");
da.SelectCommand.Parameters.Add("@sheng", SqlDbType.VarChar, 40).Value = this.DropDownList1.SelectedValue;
da.SelectCommand.Parameters.Add("@city", SqlDbType.VarChar, 40).Value = this.DropDownList2.SelectedValue;
da.SelectCommand.Parameters.Add("@qixian", SqlDbType.VarChar, 60).Value = this.DropDownList3.SelectedValue;
da.SelectCommand.Parameters.Add("@xiangz", SqlDbType.VarChar, 50).Value = this.DropDownList4.SelectedValue;

DataSet ds = new DataSet1();
dbCon.Open();
da.Fill(ds, "wsp_report_1");
dbCon.Close();
doc.SetDataSource(ds.Tables["wsp_report_1"]);

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

paramField.Name = "sj";
discreteVal.Value = this.txtRq1.Text + " - " + this.txtRq2.Text;
paramField.CurrentValues.Add(discreteVal);
paramFields.Add(paramField);

paramField = new ParameterField();
discreteVal = new ParameterDiscreteValue();
paramField.Name = "diq";
string strDiq = this.DropDownList1.SelectedItem.Text + this.DropDownList2.SelectedItem.Text + this.DropDownList3.SelectedItem.Text + this.DropDownList4.SelectedItem.Text;
if(strDiq == "")
{
strDiq = "全部地区";
}
discreteVal.Value = strDiq;
paramField.CurrentValues.Add(discreteVal);
paramFields.Add(paramField);

paramField = new ParameterField();
discreteVal = new ParameterDiscreteValue();
paramField.Name = "danw";
string strDanw = this.ddlDanw.SelectedItem.Text;
if(strDanw == "")
{
strDanw = "全部单位";
}
discreteVal.Value = strDanw;
paramField.CurrentValues.Add(discreteVal);
paramFields.Add(paramField);

this.CRV.ParameterFieldInfo = paramFields;

this.CRV.ReportSource = doc;
}


我在每个事件里也都重新绑定数据了

protected void CRV_Navigate(object source, NavigateEventArgs e)
{
BindCrv();
}
protected void CRV_ReportRefresh(object source, ViewerEventArgs e)
{
BindCrv();
}
protected void CRV_Search(object source, SearchEventArgs e)
{
BindCrv();
}


如上面的代码,我在第一次打开页面时,可以显示数据,但翻页,刷新,导出,查找时,都会提示“缺少参数值”。
...全文
304 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kwmxw 2008-11-10
  • 打赏
  • 举报
回复
up
todaywlq 2008-03-31
  • 打赏
  • 举报
回复
to:tangserver
调试的时候 paramFields 的值是正确的
todaywlq 2008-03-31
  • 打赏
  • 举报
回复
to:一等一
如果不在其他事件里面BindCrv(),翻页时就没有数据,显示的是设计报表时的示例数据。
我用的是水晶报表12
报错是在显示报表的面页没有显示报表,只显示了 缺少参数值 几个字
TNT_1st_excellence 2008-03-31
  • 打赏
  • 举报
回复
哪一行报的错啊 或者把整个文件给贴出来

PS: 楼主不用再每个事件中都写上BindCrv(); 只需要在Page_Load中写一次就好了
tangserver 2008-03-31
  • 打赏
  • 举报
回复
单步调试下看哪个参数值没有获得
boyle0630 2008-03-31
  • 打赏
  • 举报
回复
应该是IsPostBack=true 问题,你把代码写在
if(!IsPostBack)
{
...
}
试试
tangserver 2008-03-31
  • 打赏
  • 举报
回复
看下你报表设计的时候是不是设定了什么参数

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧