繁体   English   中英

难以显示报告

[英]Difficulty in displaying a report

我是第一次分层开发(数据、业务、演示),在我直接进行之前,现在我想显示一个报告,这些是代码:

//DATA
//================
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;

namespace CapaDatos
{
    public class DCategorias
    {
        public int IDCategoria { get; set; }
        public string Categoria { get; set; }
        public string Notas { get; set; }
    
    public DataTable Mostrar()
        {
            DataTable TablaDatos = new DataTable("Categorias");
            using (OleDbConnection OleDbConexion = new OleDbConnection())
            {
                try
                {
                    OleDbConexion.ConnectionString = DConexion.ChronusBD;
                    OleDbConexion.Open();

                    OleDbCommand OleDbComando = new OleDbCommand
                    {
                        Connection = OleDbConexion,
                        CommandText = @"SELECT Categoria, Notas
                                    FROM Categorias
                                    ORDER BY Categoria",
                        CommandType = CommandType.Text
                    };

                    OleDbDataAdapter OleDbAdaptadorDatos = new OleDbDataAdapter(OleDbComando);
                    OleDbAdaptadorDatos.Fill(TablaDatos);
                }
                catch (Exception ex)
                {
                    throw new Exception("Error al intentar ejecutar la instrucción. " + ex.Message, ex);
                }
                finally
                {
                    OleDbConexion.Close();
                }
            }

            return TablaDatos;
        }

        public List<DCategorias> Reporte()
        {
            DataTable tablaDatos = Mostrar();

            List<DCategorias> categorias = new List<DCategorias>();

            foreach (DataRow row in tablaDatos.Rows)
            {
                DCategorias categoria = new DCategorias();
                categoria.Categoria = row["Categoria"].ToString();
                categoria.Notas = row["Notas"].ToString();

                categorias.Add(categoria);
            }

            return categorias;
        }
    }
//BUSINESS
//================
using System;
using System.Collections.Generic;
using System.Data;
using CapaDatos;

namespace CapaNegocio
{
    public class NCategorias
    {
        public string Categoria { get; set; }
        public string Notas { get; set; }

    public static DataTable Mostrar()
        {
            return new DCategorias().Mostrar();
        }

        public static List<NCategorias> ReporteCategorias()
        {
            List<DCategorias> categoriasDatos = new DCategorias().Reporte();
            List<NCategorias> categoriasNegocio = new List<NCategorias>();

            foreach (DCategorias categoriaDatos in categoriasDatos)
            {
                NCategorias categoriaNegocio = new NCategorias();
                //categoriaNegocio.IDCategoria = categoriaDatos.IDCategoria;
                categoriaNegocio.Categoria = categoriaDatos.Categoria;
                categoriaNegocio.Notas = categoriaDatos.Notas;

                categoriasNegocio.Add(categoriaNegocio);
            }

            return categoriasNegocio;
        }
    }
//PRESENTATION
//================
//Form with ReportViewer and button BtnPrint

using Microsoft.Reporting.WinForms;
using CapaNegocio;

namespace CapaPresentacion.Formularios
{
    public partial class FormReportes : Form
    {
        public List<NCategorias> reporte = new List<NCategorias>();

        public FormReportes()
        {
            InitializeComponent();
        }

    private void BtnImprimir_Click(object sender, EventArgs e)
        {
            // ReportViewer => AreaReporte
            AreaReporte.LocalReport.DataSources.Clear();

            List<NCategorias> categorias = NCategorias.ReporteCategorias();

            DataTable tablaCategorias = new DataTable("Categorias");
            tablaCategorias.Columns.Add("Categoria", typeof(string));
            tablaCategorias.Columns.Add("Notas", typeof(string));

            foreach (NCategorias categoria in categorias)
            {
                DataRow fila = tablaCategorias.NewRow();
                fila["Categoria"] = categoria.Categoria;
                fila["Notas"] = categoria.Notas;
                tablaCategorias.Rows.Add(fila);
            }

            AreaReporte.LocalReport.DataSources.Clear();
            AreaReporte.LocalReport.DataSources.Add(new ReportDataSource("CategoriasDS", tablaCategorias));
            AreaReporte.LocalReport.ReportEmbeddedResource = "ChronusFutsal.CapaPresentacion.Reportes.RepCategorias.rdlc";

            // Hacemos un refresh al reportViewer
            AreaReporte.RefreshReport();
        }
    }

我的报告名为 RepCategorias.rdlc,数据源为 Object,数据集名为 CategoriaDS,来自 CapaNegocio.NCategorias,字段为 Categoria 和 Notas。 我在 AreaReporte.RefreshReport() System.NullReferenceException 中出错 请有人能告诉我错误吗?

我发现了错误。我只需要更改 SqlServer.Type 的版本就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM