私はまだ C# とレポートに慣れていません。小さな一歩を踏み出すために、1 つのテーブルを使用する Crystal Report から始めました。
最終的に私はそれを理解し、見事に機能しました。
次に、レポートに別のテーブルを追加しました。コードは何も変更していません。2 番目のテーブルのフィールドをレポートに追加すると、レポートが空白になります。
そのフィールドを再度削除すると (2 番目のテーブルの列がレポートに表示されなくなります)、レポートは再びデータを生成します。
ということで、問題はレポート側にあるという印象を受けます。しかし、とにかくコードを含めました:
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();
}
}
さらに調査した結果、問題はコードやリンクではなく、2 番目のテーブルの読み込みにあるという結論に達しました。値が等しいかそれ以上の外部結合を行いました。レポートには、最初のテーブルの結果のみが表示されます。したがって、2 番目のテーブルの値が読み取られないため、2 つのテーブル間で結合を確立できず、レポートにデータがありません。ここで質問です: Crystal Report が 2 番目のテーブルを読み取らないのはなぜですか!?
アップデート
メイン レポートから 2 番目のテーブルを削除し、データを含むサブレポートを追加しました。前と同じ結果。sup レポートに空白が表示されます。sup レポートを単独で (メイン レポートとして) 実行すると、正しく入力されました。MySQL を使用していますが、データベースの問題でしょうか?
アップデート
新しいアプリを作成しました。今回は (ADO.NET ではなく) ODBC を使用してレポートをデータベースに接続しました。そして、それは完璧に機能しました。私のプログラム全体がそれに基づいているため、ADO.Netが機能しない理由を理解する必要があります。