[英]Passing textbox value to crystal report
將TextBox值傳遞到Crystal Report時出現錯誤:
System.Runtime.InteropServices.COMException(0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B(DIS_E_BADINDEX))
at CrystalDecisions.ReportAppServer.DataDefModel.FieldsClass.get_Item(Int32 Index)
at CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(Int32 Index)
at CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(String fieldName)
at WindowsFormsApplication1.Form15.button1_Click(Object sender, EventArgs e) in ..\Form15.cs: line 134
這是我的代碼,用於使我在文本框中輸入的值顯示在報告中,包括錯誤行:
ParameterFieldDefinitions paramFieldDefinitions;
paramValue = new ParameterValues();
discreteValue = new ParameterDiscreteValue();
discreteValue.Value = Convert.ToString(txtYear.Text);
paramFieldDefinitions = CrystalReport81.DataDefinition.ParameterFields;
fieldDefinition = paramFieldDefinitions["Year"]; <-- the is the line 134
commonParam();
discreteValue.Value = Convert.ToString(comMonth.Text);
paramFieldDefinitions = CrystalReport81.DataDefinition.ParameterFields;
fieldDefinition = paramFieldDefinitions["Month"];
commonParam();
discreteValue.Value = Convert.ToString(Grade);
paramFieldDefinitions = CrystalReport81.DataDefinition.ParameterFields;
fieldDefinition = paramFieldDefinitions["Grade"];
commonParam();
discreteValue.Value = Convert.ToString(date);
paramFieldDefinitions = CrystalReport81.DataDefinition.ParameterFields;
fieldDefinition = paramFieldDefinitions["date"];
commonParam();
下面的代碼用於將參數傳遞給存儲過程:(正在運行)
ParameterFields myParams = new ParameterFields();
ParameterField name = new ParameterField();
ParameterDiscreteValue valName = new ParameterDiscreteValue();
name.ParameterFieldName = "@Log_User";
valName.Value = comEmployee.Text;
name.CurrentValues.Add(valName);
myParams.Add(name);
ParameterField month = new ParameterField();
ParameterDiscreteValue valMonth = new ParameterDiscreteValue();
month.ParameterFieldName = "@Month";
valMonth.Value = Convert.ToInt32(iMonth);
month.CurrentValues.Add(valMonth);
myParams.Add(month);
ParameterField year = new ParameterField();
ParameterDiscreteValue valYear = new ParameterDiscreteValue();
year.ParameterFieldName = "@Year";
valYear.Value = Convert.ToInt32(txtYear.Text);
year.CurrentValues.Add(valYear);
myParams.Add(year);
crystalReportViewer1.ParameterFieldInfo = myParams;
crystalReportViewer1.ReportSource = CrystalReport81;
crystalReportViewer1.Refresh();
我真的不知道如何將文本框中的值添加到Crystal Report中。
謝謝你,上帝保佑:D
TextObject yr = (TextObject)CrystalReport81.ReportDefinition.Sections["Section3"].ReportObjects["Text1"];
yr.Text = txtYear.Text;
表單文本框->水晶報告文本框
通過添加上面的代碼,您可以顯示在文本框中輸入的值。.但是首先,您在Crystal Report中應該有一個空的文本框,因為這將捕獲從FORM文本框中拋出的值
我希望它可以幫助其他人。因為它對我有很大幫助。
if (textBox1.Text != "")
{
//just Intlization Object's Here n Access Data using .xsd in Project
DataSet1.DataTable2DataTable dtcity = null;
DataSet1TableAdapters.DataTable2TableAdapter adpt = null;
ParameterFields myParams = null;
ParameterField name = null;
CrystalReport1 rpt = null;
ParameterDiscreteValue valYear = null;
try
{
// For Get Data For DB
dtcity = new DataSet1.DataTable2DataTable();
adpt = new DataSet1TableAdapters.DataTable2TableAdapter();
dtcity = adpt.GetStateNCityData();
rpt = new CrystalReport1();
rpt.Database.Tables["DataTable2"].SetDataSource(dtcity.Copy() as DataTable);
//For Get Data For DB
//Add Paramater
myParams = new ParameterFields();
name = new ParameterField();
valYear = new ParameterDiscreteValue();
name.ParameterFieldName = "@textName";
valYear.Value = textBox1.Text;
name.CurrentValues.Add(valYear);
myParams.Add(name);
crystalReportViewer1.ParameterFieldInfo = myParams;
//Add Paramater
crystalReportViewer1.ReportSource = rpt;
}
catch (Exception ex)
{
}
finally { }
}
else
{
MessageBox.Show("Please Enter Name");
textBox1.Focus();
}
在那@textName
是一個參數,您必須在Crystal Report中將它作為ParameterFields添加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.