大家好,我在将文本框值传递到水晶报表中的文本框对象时遇到问题。
到目前为止,这些是我尝试过的以下代码: 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();
任何?
答案 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)
}
}
}