Abaixo um código de exemplo de como criar um relatório usando o Crystal Report usando DataSet e FormulaFields:
public override CrystalDecisions.CrystalReports.Engine.ReportDocument GerarRelatorio(System.Web.UI.Page page)
{
dsControlQualidadeSintetico objDsControlQualidadeSintetico = null;
ReportDocument relatorio = null;
var lista = (List<InfoControleQualidadeSintetico>)page.Session["listaControleQualidadeSintetico"];
try
{
if (lista != null)
{
relatorio = new ReportDocument();
objDsControlQualidadeSintetico = new dsControlQualidadeSintetico();
relatorio.Load(page.Server.MapPath(@"~\Modulos\Comum\Relatorios Gerais\crControlQualidadeSintetico.rpt"));
DataTable dtRelatorio = objDsControlQualidadeSintetico.Tables["dsControlQualidadeSintetico"];
DataRow row = dtRelatorio.NewRow();
String dataInicial = lista[0].DataInicial.ToString("dd/MM/yyyy");
String dataFinal = lista[0].DataFinal.ToString("dd/MM/yyyy");
relatorio.DataDefinition.FormulaFields[0].Text = "'"+dataInicial+"'";
relatorio.DataDefinition.FormulaFields[1].Text = "'"+dataFinal+"'";
foreach (var obj in lista)
{
row = dtRelatorio.NewRow();
row["DataOperacao"] = obj.DataOperacao;
row["Operacao"] = obj.Operacao;
row["Quantidade"] = obj.Quantidade;
dtRelatorio.Rows.Add(row);
}
relatorio.SetDataSource(dtRelatorio);
}
return relatorio;
}
catch
{
throw;
}
finally
{
page.Session["listaControleQualidadeSintetico"] = null;
}
}