如何使用C#将多个参数传递给Crystal报表 [英] How Do I Pass The Multiple Parameters To Crystal Report Using C#
本文介绍了如何使用C#将多个参数传递给Crystal报表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码将我的参数传递给水晶报告我在两天前工作正常但是现在它给我一个错误如下
索引无效。 (HRESULT异常:0x8002000B(DISP_E_BADINDEX))
我的代码是
DateTime fdt = dateTimePicker1.Value.Date;
DateTime edt = dateTimePicker2.Value.Date;
DateTime from_date = dateTimePicker1.Value.Date;
DateTime to_date = dateTimePicker2.Value.Date;
string fdate = fdt.ToShortDateString();
string edate = edt.ToShortDateString();
if(fdt> = edt)
{
MessageBox.Show(To Date应该大于Date ..!);
}
else
{
int user_id = TempDataStorage.userid;
DatabaseConnection cs = new DatabaseConnection();
Object o = cs.GetAfield(从App_User中选择branch_code,其中app_user_id =+ user_id +);
branch_code = o.ToString();
string qry =从Balance_details选择opening_bal,其中sysdate =#+ fdate +#and branch_code ='+ branch_code +';
OleDbCommand cmd1 = new OleDbCommand(qry,con);
con.Open();
Object retvalue = cmd1.ExecuteScalar();
opening_bal = Convert.ToInt32(retvalue是DBNull?0:retvalue);
con.Close();
string qry2 =从Balance_details选择closing_bal,其中sysdate =#+ edate +#and branch_code ='+ branch_code +';
OleDbCommand cmd2 = new OleDbCommand(qry2,con);
con.Open();
retvalue = cmd2.ExecuteScalar();
closing_bal = Convert.ToInt32(retvalue是DBNull?0:retvalue);
con.Close();
ReportDocument cryRpt = new ReportDocument();
//cryRpt.Load(\"E:\\VertexApp\\VertexApp\\ balance_sheet.rpt);
// string path =D:\\Vertex_db\\Report \\balance_sheet.rpt;
string path = @D:\ Vertert_db\Report\CrystalReport1.rpt;
尝试
{
cryRpt.Load(path);
}
catch(exception ex)
{
MessageBox.Show(ex.ToString());
}
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue.Value = fdt;
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions [From_Date];
crParameterValues = crParameterFieldDefinition.CurrentValues;
//从报告日期开始打印
ParameterFieldDefinitions crParameterFieldDefinitions1;
ParameterFieldDefinition crParameterFieldDefinition1;
ParameterValues crParameterValues1 = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue1 = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue1.Value = from_date;
crParameterFieldDefinitions1 = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition1 = crParameterFieldDefinitions1 [FDATE];
crParameterValues1 = crParameterFieldDefinition1.CurrentValues;
//要在报告上打印日期
ParameterFieldDefinitions crParameterFieldDefinitions2;
ParameterFieldDefinition crParameterFieldDefinition2;
ParameterValues crParameterValues2 = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue2 = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue2.Value = to_date;
crParameterFieldDefinitions2 = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition2 = crParameterFieldDefinitions2 [TDATE];
crParameterValues2 = crParameterFieldDefinition2.CurrentValues;
//将结束日期作为范围传递以选择记录
ParameterFieldDefinitions crParameterFieldDefinitions3;
ParameterFieldDefinition crParameterFieldDefinition3;
ParameterValues crParameterValues3 = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue3 = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue3.Value = edt;
crParameterFieldDefinitions3 = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition3 = crParameterFieldDefinitions3 [To_Date];
crParameterValues3 = crParameterFieldDefinition3.CurrentValues;
//将期初余额amt作为参数传递给
参数.FieldDefinitions crParameterFieldDefinitions4;
ParameterFieldDefinition crParameterFieldDefinition4;
ParameterValues crParameterValues4 = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue4 = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue4.Value = opening_bal;
crParameterFieldDefinitions4 = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition4 = crParameterFieldDefinitions4 [Opening_Bal];
crParameterValues4 = crParameterFieldDefinition4.CurrentValues;
//将期末余额amt作为参数传递给报告
ParameterFieldDefinitions crParameterFieldDefinitions5;
ParameterFieldDefinition crParameterFieldDefinition5;
ParameterValues crParameterValues5 = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue5 = new ParameterDiscreteValue();
// string voucher_code = TempDataStorage._print_code;
crParameterDiscreteValue5.Value = closing_bal;
crParameterFieldDefinitions5 = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition5 = crParameterFieldDefinitions5 [Closing_Bal];
crParameterValues5 = crParameterFieldDefinition5.CurrentValues;
crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
crParameterValues1.Clear();
crParameterValues1.Add(crParameterDiscreteValue1);
crParameterFieldDefinition1.ApplyCurrentValues(crParameterValues1);
crParameterValues2.Clear();
crParameterValues2.Add(crParameterDiscreteValue2);
crParameterFieldDefinition2.ApplyCurrentValues(crParameterValues2);
crParameterValues3.Clear();
crParameterValues3.Add(crParameterDiscreteValue3);
crParameterFieldDefinition3.ApplyCurrentValues(crParameterValues3);
crParameterValues4.Clear();
crParameterValues4.Add(crParameterDiscreteValue4);
crParameterFieldDefinition4.ApplyCurrentValues(crParameterValues4);
crParameterValues5.Clear();
crParameterValues5.Add(crParameterDiscreteValue5);
crParameterFieldDefinition5.ApplyCurrentValues(crParameterValues5);
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
请帮我解决此错误
解决方案
我也解决了这个问题我创建参数 水晶报告和我将该参数传递给水晶报告
在上面我只是拼错参数名称我更正了 我自己
I have a following code with me to pass the parameters to a crystal report i was working fine before two days but now it give me an error as follows
Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
My Code is
DateTime fdt = dateTimePicker1.Value.Date; DateTime edt = dateTimePicker2.Value.Date; DateTime from_date = dateTimePicker1.Value.Date; DateTime to_date = dateTimePicker2.Value.Date; string fdate = fdt.ToShortDateString(); string edate = edt.ToShortDateString(); if (fdt >= edt) { MessageBox.Show("To Date Should Be Greater Than From Date..!"); } else { int user_id = TempDataStorage.userid; DatabaseConnection cs = new DatabaseConnection(); Object o = cs.GetAfield("select branch_code from App_User where app_user_id=" + user_id + ""); branch_code = o.ToString(); string qry = "select opening_bal from Balance_details where sysdate= #" + fdate + "# and branch_code='" + branch_code + "'"; OleDbCommand cmd1 = new OleDbCommand(qry, con); con.Open(); Object retvalue = cmd1.ExecuteScalar(); opening_bal = Convert.ToInt32(retvalue is DBNull ? 0 : retvalue); con.Close(); string qry2 = "select closing_bal from Balance_details where sysdate= #" + edate + "# and branch_code='" + branch_code + "'"; OleDbCommand cmd2 = new OleDbCommand(qry2, con); con.Open(); retvalue = cmd2.ExecuteScalar(); closing_bal = Convert.ToInt32(retvalue is DBNull ? 0 : retvalue); con.Close(); ReportDocument cryRpt = new ReportDocument(); //cryRpt.Load("E:\\VertexApp\\VertexApp\\balance_sheet.rpt"); //string path = "D:\\Vertex_db\\Report\\balance_sheet.rpt"; string path = @"D:\Vertex_db\Report\CrystalReport1.rpt"; try { cryRpt.Load(path); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } ParameterFieldDefinitions crParameterFieldDefinitions; ParameterFieldDefinition crParameterFieldDefinition; ParameterValues crParameterValues = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue.Value = fdt; crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition = crParameterFieldDefinitions["From_Date"]; crParameterValues = crParameterFieldDefinition.CurrentValues; //to print from date on report ParameterFieldDefinitions crParameterFieldDefinitions1; ParameterFieldDefinition crParameterFieldDefinition1; ParameterValues crParameterValues1 = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue1 = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue1.Value = from_date; crParameterFieldDefinitions1 = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition1 = crParameterFieldDefinitions1["FDATE"]; crParameterValues1 = crParameterFieldDefinition1.CurrentValues; // to print to date on report ParameterFieldDefinitions crParameterFieldDefinitions2; ParameterFieldDefinition crParameterFieldDefinition2; ParameterValues crParameterValues2 = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue2 = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue2.Value = to_date; crParameterFieldDefinitions2 = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition2 = crParameterFieldDefinitions2["TDATE"]; crParameterValues2 = crParameterFieldDefinition2.CurrentValues; //pass the end date as a range to select the records ParameterFieldDefinitions crParameterFieldDefinitions3; ParameterFieldDefinition crParameterFieldDefinition3; ParameterValues crParameterValues3 = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue3 = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue3.Value = edt; crParameterFieldDefinitions3 = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition3 = crParameterFieldDefinitions3["To_Date"]; crParameterValues3 = crParameterFieldDefinition3.CurrentValues; //pass the opening balance amt as a parameter to report ParameterFieldDefinitions crParameterFieldDefinitions4; ParameterFieldDefinition crParameterFieldDefinition4; ParameterValues crParameterValues4 = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue4 = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue4.Value = opening_bal; crParameterFieldDefinitions4 = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition4 = crParameterFieldDefinitions4["Opening_Bal"]; crParameterValues4 = crParameterFieldDefinition4.CurrentValues; //pass the closing balance amt as a parameter to report ParameterFieldDefinitions crParameterFieldDefinitions5; ParameterFieldDefinition crParameterFieldDefinition5; ParameterValues crParameterValues5 = new ParameterValues(); ParameterDiscreteValue crParameterDiscreteValue5 = new ParameterDiscreteValue(); //string voucher_code = TempDataStorage._print_code; crParameterDiscreteValue5.Value = closing_bal; crParameterFieldDefinitions5 = cryRpt.DataDefinition.ParameterFields; crParameterFieldDefinition5 = crParameterFieldDefinitions5["Closing_Bal"]; crParameterValues5 = crParameterFieldDefinition5.CurrentValues; crParameterValues.Clear(); crParameterValues.Add(crParameterDiscreteValue); crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); crParameterValues1.Clear(); crParameterValues1.Add(crParameterDiscreteValue1); crParameterFieldDefinition1.ApplyCurrentValues(crParameterValues1); crParameterValues2.Clear(); crParameterValues2.Add(crParameterDiscreteValue2); crParameterFieldDefinition2.ApplyCurrentValues(crParameterValues2); crParameterValues3.Clear(); crParameterValues3.Add(crParameterDiscreteValue3); crParameterFieldDefinition3.ApplyCurrentValues(crParameterValues3); crParameterValues4.Clear(); crParameterValues4.Add(crParameterDiscreteValue4); crParameterFieldDefinition4.ApplyCurrentValues(crParameterValues4); crParameterValues5.Clear(); crParameterValues5.Add(crParameterDiscreteValue5); crParameterFieldDefinition5.ApplyCurrentValues(crParameterValues5); crystalReportViewer1.ReportSource = cryRpt; crystalReportViewer1.Refresh();
Please Help Me to solve this error
解决方案
I solved this question also i create a parameter in crystal report and i pass that parameter to the crystal report In above i just miss spell the parameter name i correct it for myself
这篇关于如何使用C#将多个参数传递给Crystal报表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文