我有一个与 Xtra 报告和带参数的存储过程相关的问题。
我使用 XtraReports 的时间不长,但我学到了很多东西。问题是我无法以正确的方式完成一项任务。
让我解释:
在我的数据集中,我有一个SP_get_singleRecord
有 2 个参数(@ID, @TYPE) /*string,int*/
,表有 6 列。
因此,我将dataset(dataset1)
和dataMember(SP_get_singleRecord)
添加dataAdapter(SP_get_singleRecord_TableAdapter)
到 xtraReport。我使用向导来设置字段。
现在我转到 xtrareports 的 fieldList 上的参数部分,并添加参数ID
asstring
和TYPE
as int
。
然后我转到过滤器字符串并设置如下参数:
[ID] = ?ID And [TYPE] = ?TYPE
现在,我转到 windowsForm -> print_simplebuttonEvent_OnClick
我像这样默默地传递参数:
private void btn_print_Click(object sender, EventArgs e)
{
//convert parameters from controls
int type = Convert.ToInt32(lookUpEdit_Type.EditValue);
string id = lookUpEdit_id.EditValue.ToString();
// Create a report instance
Xtrareport report = new Xtrareport();
// Obtain a parameter, and set its value.
report.ID.Value = id;
report.TYPE.Value = type;
// Hide the Parameters UI from end-users.
report.ID.Visible=false;
report.TYPE.Visible = false;
// Show the report's print preview.
report.ShowPreview();
}
然后我收到一条错误消息,上面写着:Error when trying to populate the datasource. The following exception was thrown: Procedure or function 'SP_getSingleRecord' expects parameter '@ID' which was not supplied.
据此,我传递的参数从未到达存储过程。我试图在打印报告之前获得一条记录,但我不知道我在这里遗漏了什么......
我尝试了另一种方法来做到这一点,但这涉及将“SP_getSingleRecord”更改为“SP_getALLRecords”(没有参数)。这将返回大约 6500 多条记录,然后从报告的一侧过滤它们,但这需要 9 秒,这是不可接受的......它有效,但它不是正确的方式......
我希望我已经说清楚了。我希望你能帮助我。
提前致谢。
阿尔弗雷德。