来自Appdev的问候(我是Crystall Report的新手)
我正在创建一个包含水晶报告的Web应用程序。
我的要求是:
应显示报告基于文本框中给出的值(网络表单中的文本框)。
例如: 如果Textbox值= 2表示只有id为2的项目才会显示。
我的水晶报告有3个子报告,如支票,派对(其中还包含来自其他表格中的值称为凭证),最后是银行。 这4个表由1个名为id的公共字段链接。
这是我如何使用c#
中.cs文件中的参数绑定水晶报告public void LoadTransReceipt()
{
string Date = "";
string Sql = "SELECT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text.Trim() + "' and tREC_NUIsActive=1";
SqlDataReader rdr = mobjGenlib.objDBLib.ExecuteQueryReader(Sql.ToString());
while (rdr.Read())
{
Session["ID"] = rdr.GetValue(0).ToString();
}
rdr.Close();
if (!string.IsNullOrEmpty(Session["ID"] as string))
{
if (Session["Date"] != null)
{
Date = mobjGenlib.ConvertString(Session["Date"]);
}
reportPath = GetReportPath("ReceiptReport.rpt");
CRReport = new ReportDocument();
CRReport.Load(reportPath);
CrystalReportViewer1.ReportSource = CRReport;
AddParameterToReport("IDP", Session["ID"].ToString());
AddParameterToReport("ActiveP", 1);
AddParameterToReport("IDB", Session["ID"].ToString());
AddParameterToReport("ActiveB", 1);
AddParameterToReport("IDC", Session["ID"].ToString());
AddParameterToReport("ActiveC", 1);
// ConnectionInfo connectionInfo = ConnInfo();
ConnectionInfo objConnInfo = new ConnectionInfo();
objConnInfo.DatabaseName = "Demo";
objConnInfo.UserID = "aa";
objConnInfo.Password = "aaaa";
objConnInfo.ServerName = "HOME-PC\\SQLEXPRESS";
SetDBLogonForReport(objConnInfo, CRReport);
SetDataSetForMultipleSubReport(objConnInfo, CRReport);
}
}
但是当我执行代码时,它会在表格中显示所有可用的数据,如下所示
任何人都可以帮我解决这个问题
提前致谢
错误
“**
指定的参数超出了有效值范围
**“
答案 0 :(得分:0)
从报表中的字段资源管理器右键单击添加新参数,然后在后面的代码中,您必须设置参数的值,如:
CRReport.SetParameterValue("@Parameter", TXTVou.Text)
您可以通过在查询中添加单词DISTINCT来阻止复制:
"SELECT DISTINCT tREC_NUPKId as ID from TB_TransReceipt where tREC_VCVoucherNo='" + TXTVou.Text + "' and tREC_NUIsActive=1"
或者您可以在字段
中阻止重复(如果重复时禁止)属性