将文本框值传递给Crystal Report文本框

时间:2015-04-23 08:55:42

标签: c# crystal-reports

大家好,我在将文本框值传递到水晶报表中的文本框对象时遇到问题。

到目前为止,这些是我尝试过的以下代码:

     TextObject yr = (TextObject)cy.ReportDefinition.Sections["Section1"].ReportObjects["gender1"];
     yr.Text = txtGender.Text;

它提示错误消息说:索引超出了数组的范围。

     cy.SetParameterValue("gender1", txtGender.text);

这个提示:索引无效

这是我加载记录的代码。一切都有效,除了传递文本框的值。

图例:

dt1 =数据集

crpt.rpt = Crystal报告文件

            SqlConnection conn = conString.getCon();
            ReportDocument cy = new ReportDocument();

            conn.Open();
            cy.Load(Application.StartupPath + @"\crpt.rpt");

            TextObject gr = (TextObject)cy.ReportDefinition.Sections["Section1"].ReportObjects["gender1"];
            gr.Text = txtGender.Text;

            SqlDataAdapter da = new SqlDataAdapter("exec viewInfo @gen", conn);
            da.SelectCommand.Parameters.AddWithValue("@gen", txtGender.Text);

            dt1 ds = new dt1();
            da.Fill(ds.Info);
            cy.SetDataSource(ds);

            crystalReportViewer1.ReportSource = cy;
            conn.Close();

任何?

3 个答案:

答案 0 :(得分:0)

如果您尝试在报告中设置参数,则可以使用

crystalReportViewer1.ParameterFieldInfo["gender1"].CurrentValues.Add(txtGender.Text)
在设置CrystalReportViewer.ReportSource之后

... ,但如果您收到该错误,可能是参数名称中有拼写错误或参数isn&t; t首先在报告文件(.rpt)中创建。

如果您尝试使用ReportDocument.RecordSelectionFormula过滤数据,也可以查看txtGender.Text

答案 1 :(得分:0)

CrystalReport2 objRpt = new CrystalReport2();

TextObject accntCode = (TextObject)objRpt.ReportDefinition.Sections["Section2"].ReportObjects["codeText11"];
accntCode.Text = codevalue;

只需使用此功能,您就不需要使用报告文档。您可以直接将值分配给Crystal Report中的字段对象。

答案 2 :(得分:-1)

以下应为您工作:

class AnotherClass{
 func anotherClassFunc(){
 //use if let or guard let
  if let user = FetchingClass.user{
  print(user.name)
 }
 //or
 if let FetchingClass.user != nil {
  print(FetchingClass.name)
  }
 }
}