我还是 C# 和报表的新手,为了迈出小步,我开始使用一张表的 Crystal Report。
最终我想通了,而且效果很好。
然后我在报告中添加了另一个表格。我没有更改我的代码中的任何内容。将第二个表中的字段添加到报告中会生成一个空白报告。
再次删除该字段(因此报告中没有第二个表中的列),报告再次生成数据。
所以我的印象是问题出在报告方面。但无论如何我已经包含了代码:
private void Load_Ord_Rep()
{
using (MySqlConnection conn = new MySqlConnection(OTW.Properties.Settings.Default.wcdbConnectionString))
{
conn.Open();
String sql = "SELECT * FROM wcdb.order_table, wcdb.mat_table WHERE order_no = '13661' and order_table.mat_code = mat_table.mat_code";
using (MySqlCommand cmdSel = new MySqlCommand(sql, conn))
{
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(cmdSel);
da.Fill(ds);
ReportDocument rpt = new ReportDocument();
rpt.Load("C:\\Visual Studio 2008\\Projects\\OTW\\OTW\\CrystalReport3.rpt");
dataView1.Table = ds.Tables[0];
rpt.SetDataSource(dataView1);
crystalReportViewer1.ReportSource = rpt;
crystalReportViewer1.Refresh();
}
conn.Close();
}
}
通过进一步调查,我得出结论,问题不在于代码或链接,而在于第二个表的加载。我做了一个外部连接,值相等或更大。报告中仅显示第一个表的结果。所以因为第二个表的值没有被读取,所以两个表之间不能建立连接,因此报告中没有数据。现在的问题是:为什么水晶报表没有读取第二个表!?
更新
我从主报告中删除了第二个表格,并添加了一个包含数据的子报告。结果和以前一样。sup 报告显示空白。单独运行 sup 报告(作为主报告),它填充正确。我正在使用 MySQL,这可能是数据库问题吗?
更新
我创建了一个新应用程序,这次使用 ODBC(而不是 ADO.NET)将报表连接到数据库。而且效果很好。现在要弄清楚为什么 ADO.Net 不起作用....因为我的整个程序都是基于它的。