Crystal Report刷新数据

时间:2014-12-09 14:58:09

标签: c# crystal-reports odbc

我正在以.net windows形式开发一个应用程序,问题是这个。

我有一个CystalReportViewer链接到一个带有输入参数,ODBC连接的过程,问题或问题是如何更新报告而不必输入已从代码中发送的参数

nformeAvanceObra objReport = new InformeAvanceObra();  //  Object .rpt report
objReport.SetParameterValue("CodCoti", CodCotizacion);//parameter that I send to Procedure
objReport.SetParameterValue("Fecha2", Fecha);// parameter that I send to Procedure
crystalReportViewer.ReportSource = objReport; //asigno al viewer.

可以帮助我或让我知道如何完成我想要的东西? ,谢谢

1 个答案:

答案 0 :(得分:0)

我可能没有正确理解你的问题。你的意思是"从代码发货"?

如果Crystal Reports正在运行您的过程,那么Crystal Reports应该是将参数发送到您的过程的Crystal Reports。如果需要参数来运行该过程,则需要将此参数提供给Crystal Reports报告。

如果您想将参数修改为某个值,则无需从代码中发送参数。但肯定你需要改变你的报告!

如何发送参数的示例:

ReportDocument reportDocument = new ReportDocument();

ParameterFields paramFields = new ParameterFields();
// ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@Dept";
paramDiscreteValue.Value = TextBox1.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);

paramField = new ParameterField(); // <-- This line is added
paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
paramField.Name = "@Name";
paramDiscreteValue.Value = TextBox2.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);

CrystalReportViewer1.ParameterFieldInfo = paramFields;
reportDocument.Load(Server.MapPath("CrystalReport.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetDatabaseLogon("sa", "sa", "OPWFMS-7KYGZ7SB", "test");