首页 > 解决方案 > C# Winforms RDLC 报告静态交叉表列

问题描述

我有访问数据库,其中有付款表。我正在使用 c# 中的适配器加载此表,并填充一个数据集以用作 RDLC 交叉表报告的数据源。结果符合预期。但我的问题是,在添加更多数据时,报告并未显示未来可能出现的所有可能列。

我的问题是如何指定在 RDLC 交叉表报告中显示的所有必需列,即使它们不存在数据?

这是我的基本代码:

string sql = "select* from [payments]";
try
{
   using (OleDbConnection conn = new OleDbConnection(myGlobals.connString))
      {
          using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn))
          {
             DataSet ds = new DataSet();
             adapter.Fill(ds, "regPayments");
             frmReport report = new frmReport();
             BindingSource bs = new BindingSource(ds, "regPayments");
             report.ReportViewer.LocalReport.DataSources.Add(new ReportDataSource("dsRegPayments", bs));
             report.ReportViewer.LocalReport.ReportEmbeddedResource = "Kindergarten.Report10.rdlc";
             report.Show();
          }
      }
}
catch(Exception ex)
{
    MessageBox.Show(ex.ToString());
}

标签: c#staticreportrdlccrosstab

解决方案


如果您正在使用 SQL,请更改为 SQL 数据连接,如果不是,请确保您请求架构数据。

看看MSDN,您就会知道并不总是提供架构。

// Assumes a valid connection string to an Access database.
static void CreateOleDbAdapter(string connectionString)
{
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand =
        new OleDbCommand("SELECT * FROM Categories ORDER BY CategoryID");
    adapter.SelectCommand.Connection =
        new OleDbConnection(connectionString);
    adapter.MissingMappingAction = MissingMappingAction.Error;
    adapter.MissingSchemaAction = MissingSchemaAction.Error;
}

推荐阅读