vs2005 自带水晶报表设计时的数据库连接是存储过程 在运行时 出现未提供参数的错误

fslong25 2007-07-27 04:28:41
代码:
private void InitialzeReport()
{
this.rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
this.rpt.Load(AppDomain.CurrentDomain.BaseDirectory + "Report\\rptBomMingXi.rpt");
this.rpt.SetParameterValue("@ProductID", "");
TableLogOnInfo logOnInfo = new TableLogOnInfo();
string strDataBase = System.Configuration.ConfigurationSettings.AppSettings.Get("Database");
string strServer = System.Configuration.ConfigurationSettings.AppSettings.Get("Server");
string strPassWord = System.Configuration.ConfigurationSettings.AppSettings.Get("PassWord");
string strUser = System.Configuration.ConfigurationSettings.AppSettings.Get("User");
logOnInfo = this.rpt.Database.Tables[0].LogOnInfo;
logOnInfo.ConnectionInfo.DatabaseName = strDataBase;
logOnInfo.ConnectionInfo.ServerName = strServer;
logOnInfo.ConnectionInfo.Password = strPassWord;
logOnInfo.ConnectionInfo.UserID = strUser;
this.rpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);

ParameterFields mParameterFields = new ParameterFields();
ParameterField mParameterField = new ParameterField();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();
ParameterRangeValue rangeVal = new ParameterRangeValue();

mParameterField.ParameterFieldName = "@ProductID";
discreteVal.Value = "";
mParameterField.CurrentValues.Add(discreteVal);
mParameterFields.Add(mParameterField);
this.crystalReportViewer1.ParameterFieldInfo = mParameterFields;

DataSet ds = new BUReportBomMingXi().GetBomList("");
this.rpt.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = this.rpt;
}
窗体刚加载时 调用InitialzeReport()方法没有出现问题。

private void bsProduct_PositionChanged(object sender, EventArgs e)
{
if (this.bsProduct.Count == 0) return;
if (this.tabControl1.SelectedTab == this.tabPage2)
{
string productID = this.grwProduct.Rows[this.bsProduct.Position].Cells["grwcProductID"].Value.ToString();
this.rpt.SetParameterValue("@ProductID", productID);
DataSet ds = new BUReportBomMingXi().GetBomList(productID);
this.rpt.SetDataSource(ds);
this.crystalReportViewer1.ReportSource = this.rpt;
}
}
触发这个事件就出问题了。
如下:
打开行集失败。
详细资料:ADO Error Code:0x
Source:Microsoft OLE DB Provider For SQL Server
Description:过程'ProBomMingXi'需要参数'@ProductID',但未提供该参数。
SQL State:4200
Native Error:打开行集失败。
文件C:\Docume~\Lindon\Locals~1\Temp\rptBomMingXi{是GUID}.rpt内出错:
未能打开行集。
...全文
293 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
城市猎人0611 2008-06-16
  • 打赏
  • 举报
回复
需要参数 '@ProductID ',但未提供该参数。 需要你输入些参数
Jade_2008 2008-05-30
  • 打赏
  • 举报
回复
一下仅供参考:
1.用存储过程提取数据的时候要给参数赋值
2.触发事件bsProduct_PositionChanged时
,报表会重新载入,要重新填充数据,同时就要为参数赋值
vainnetwork 2007-07-28
  • 打赏
  • 举报
回复
关注,帮顶.............

4,818

社区成员

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

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