c# - 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());
}
解决方案
如果您正在使用 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;
}
推荐阅读
- python - 如何编写代码在拆分之前检查项目是否为负?
- haskell - Haskell 中的函数类型推断
- c# - 使用外键获取表信息
- angular - 使用 Font Awesome 图标模块测试组件
- node.js - passport.authenticate() 使用 Promise 而不是自定义回调
- c# - 在 c# 8 中创建文件关联
- dart - Flutter Firestore 添加具有自定义 ID 的新文档
- javascript - Angular Universal:避免在 DOM 替换时重新启动 CSS 动画
- javascript - Angularjs下拉分组
- c - 替代数据格式