【发布时间】:2017-08-03 03:46:02
【问题描述】:
我正在使用 Windows 窗体和 c# 创建一个应用程序。 我正在尝试使用从 Datagridview 中提取的数字列表在同一个查看器上生成多页报告,但是即使我为水晶报表查看器的存储过程传递了多个参数,水晶报表查看器也只会生成第一页。
我想要的是:对于每个参数,在同一报表查看器中生成与该参数对应的报表,但在每个报表的不同页面中,对所有参数使用相同的存储过程。例如:我传递参数1,报表查看器在页面#1 中显示报表#1,我传递参数2,报表查看器在页面#2 中显示报表#2,依此类推。
我错过了什么?还是我做错了什么?
提前致谢。
这是加载我的报告的代码:
using System;
using System.Configuration;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using MySql.Data.MySqlClient;
namespace Sistema_Facturacion
{
public partial class frmReporteTodasFacturas : Form
{
public int NumeroFactura { get; set; }
public IList<int> ListaFacturas { get; set; }
public frmReporteTodasFacturas()
{
InitializeComponent();
}
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
ReportDocument Reporte = new ReportDocument();
ParameterFields arregloParametros = new ParameterFields();
ParameterField FacturaNumero = new ParameterField();
FacturaNumero.Name = "p_idFactura";
//for each Number in the list generate a different report in a different page
foreach (int NoFactura in ListaFacturas)
{
ParameterDiscreteValue valorNumeroFactura = new ParameterDiscreteValue();
valorNumeroFactura.Value = NoFactura;
FacturaNumero.CurrentValues.Add(valorNumeroFactura);
arregloParametros.Add(FacturaNumero);
}
this.crystalReportViewer1.ParameterFieldInfo = arregloParametros;
string path =
Application.StartupPath + System.IO.Path.DirectorySeparatorChar + "Reportes" +
System.IO.Path.DirectorySeparatorChar + "TodasFacturasSistemaFacturacion.rpt";
Reporte.Load(path);
string CadenaConexion = ConfigurationManager.ConnectionStrings["MySQLAutentication"].ToString();
MySqlConnectionStringBuilder CSB = new MySqlConnectionStringBuilder(CadenaConexion);
string BaseDatos= CSB.Database;
string Usuario = CSB.UserID;
string Contrasena = CSB.Password;
string Puerto = CSB.Port.ToString();
string Servidor = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=" + CSB.Server + ";" +"Port="+ Puerto + ";" +"Option=3;";
ConnectionInfo ciReportConnection = new ConnectionInfo();
ciReportConnection.ServerName = Servidor;
ciReportConnection.DatabaseName = BaseDatos;
ciReportConnection.UserID = Usuario;
ciReportConnection.Password = Contrasena;
foreach (Table table in Reporte.Database.Tables)
{
table.LogOnInfo.ConnectionInfo = ciReportConnection;
table.ApplyLogOnInfo(table.LogOnInfo);
}
foreach (ReportDocument subrep in Reporte.Subreports)
{
foreach (Table table in subrep.Database.Tables)
{
table.LogOnInfo.ConnectionInfo = ciReportConnection;
table.ApplyLogOnInfo(table.LogOnInfo);
}
}
if (this.crystalReportViewer1.LogOnInfo != null)
{
TableLogOnInfos tlInfo = this.crystalReportViewer1.LogOnInfo;
foreach (TableLogOnInfo tbloginfo in tlInfo)
{
tbloginfo.ConnectionInfo = ciReportConnection;
}
}
crystalReportViewer1.ReportSource = Reporte;
crystalReportViewer1.Refresh();
}
}
}
【问题讨论】:
标签: c# crystal-reports