我有一个Crystal Report rpt报告,它创建了一些填充有数据表的固定字段,数据表中获得的字段可能会根据表单中字段的SQL语句而有所不同。因此,问题是,在设计rpt表单时,我是否可以通过代码添加在数据表中获得的新字段。例如,在数据表中,我得到了名字和姓氏字段,并在报表中显示了它们(在设计中,我已插入了名字和姓氏字段)。现在,在数据表中,我得到名称,姓氏和电话,如果我调用相同的报告,它将仅填写名称和姓氏,不会出现未插入报告中的“电话”字段,而是添加它。我以这种方式填充数据集:
DataSet ds = new dsDataSet();
ds.Tables.Add(new DataTable());
foreach (DataColumn column in dtBusqueda.Columns)
{
ds.Tables[0].Columns.Add(column.ColumnName);
}
现在就像我之前解释的那样,将是那些要插入报表的数据集字段。报告加载如下:
ReportDocument Report = new ReportDocument();
Report.Load("../../crReporte.rpt");
Report.SetDataSource(dtDataTable);
frmReportes form = new frmReportes(Report);
form.Show();
谢谢。
Crystal仅与预定义的数据对象一起使用,以指定格式显示数据。因此,如果您传递其他数据对象,那么它将给您错误,导致无法找到您的列。
我可以提供:
1)全部使用相同的dataTable源(原始输入tel列)。因此,请在Crystal Report中为您的特殊列设置可见性。有压迫感。
2)您可以创建2个不同的报告,并且在If Case中,您可以根据需要加载另一个报告模板。
如果仅是电话号码,则不需要复杂的要求。使用方法1.设置可见性。但是,如果您有复杂的要求。我认为您应该使用2个不同的报告模板。