Передача значения текстового поля в отчет Crystal - PullRequest
1 голос
/ 23 декабря 2011

У меня ошибка при передаче моего значения TextBox в мой отчет Crystal:

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

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012
 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 ... и просто перетащите его в свой раздел отчета.

0 голосов
/ 26 декабря 2011
TextObject yr =  (TextObject)CrystalReport81.ReportDefinition.Sections["Section3"].ReportObjects["Text1"];
            yr.Text = txtYear.Text;

Текстовое поле FORM -> Текстовое окно CRYSTAL REPORT

Добавив приведенный выше код, вы сможете отобразить значение, введенное вами в текстовые поля ... но сначала у вас должно появиться пустое текстовое поле в вашем Crystal Report, поскольку оно будет отлавливать значение, которое вы выбрасываете из текстового поля FORM

Я надеюсь, что это может помочь другим .., как это мне очень помогло ..

...