Crystal 报告不显示任何数据
Crystal report don't display any data
我在我的 C# 应用程序中使用 Crystal 报告,这是我使用的代码:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "FicheArticle":
if (con.State != ConnectionState.Open)
{
con.Open();
}
SqlCommand ficheCmd = new SqlCommand("SELECT CodeArticle, LibArticleFr, InfomationsDetaille, StockActuel FROM Article WHERE CodeArticle = @code", con);
ficheCmd.Parameters.AddWithValue("@code",Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value));
DataSet ficheDs = new DataSet();
SqlDataAdapter dscmd = new SqlDataAdapter(ficheCmd);
dscmd.Fill(ficheDs, "Article");
CrystalReport7 objRpt7 = new CrystalReport7();
objRpt7.SetDataSource(ficheDs);
crystalReportViewer7.ReportSource = objRpt7;
crystalReportViewer7.Refresh();
con.Close();
break;
}
}
查询是正确的,因为我之前测试过它,但 Crystal 报告没有显示任何内容。那么错误在哪里呢??
objRpt7.SetDataSource(ficheDs);
crystalReportViewer7.ReportSource = objRpt7;
保留断点并找到数据集的值。
SqlDataAdapter dscmd = new SqlDataAdapter(ficheCmd);
同时检查存储在 ficheCmd
中的查询,运行 作为新查询并找到查询的结果。
我发现错误,报告的数据源链接到 table 而不是
文章table,代码中没有设置。所以数据源的 tables
代码中必须相同
MySqlDataAdapter sda = new MySqlDataAdapter(@"SELECT invoive.per_ID,person.per_type,person.per_name,person.per_mobile,
invoive.INV_date,invoive.INV_no,invoive.INV_details,invoive.INV_Dr,invoive.INV_cr
FROM `invoive` INNER JOIN person ON invoive.per_ID = person.per_ID WHERE
invoive.INV_date BETWEEN '" + dateTimePicker1.Text + "' AND '" + dateTimePicker2.Text + "' AND invoive.per_ID ='" + textEdit1.Text + "' ORDER BY invoive.INV_date", con);
DataSet dst = new DataSet();
sda.Fill(dst, "invoive");
cryrptz1.Load(@"E:\Claasified\Company\FactoryManager\FactoryManager\CrystalReport6.rpt");
cryrptz1.SetDataSource(dst);crystalReportViewer1.ReportSource = cryrptz1;
int ii = dst.Tables[0].Rows.Count;
if (ii == 0)
{
// Here You can Send
}
我在我的 C# 应用程序中使用 Crystal 报告,这是我使用的代码:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "FicheArticle":
if (con.State != ConnectionState.Open)
{
con.Open();
}
SqlCommand ficheCmd = new SqlCommand("SELECT CodeArticle, LibArticleFr, InfomationsDetaille, StockActuel FROM Article WHERE CodeArticle = @code", con);
ficheCmd.Parameters.AddWithValue("@code",Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value));
DataSet ficheDs = new DataSet();
SqlDataAdapter dscmd = new SqlDataAdapter(ficheCmd);
dscmd.Fill(ficheDs, "Article");
CrystalReport7 objRpt7 = new CrystalReport7();
objRpt7.SetDataSource(ficheDs);
crystalReportViewer7.ReportSource = objRpt7;
crystalReportViewer7.Refresh();
con.Close();
break;
}
}
查询是正确的,因为我之前测试过它,但 Crystal 报告没有显示任何内容。那么错误在哪里呢??
objRpt7.SetDataSource(ficheDs);
crystalReportViewer7.ReportSource = objRpt7;
保留断点并找到数据集的值。
SqlDataAdapter dscmd = new SqlDataAdapter(ficheCmd);
同时检查存储在 ficheCmd
中的查询,运行 作为新查询并找到查询的结果。
我发现错误,报告的数据源链接到 table 而不是
文章table,代码中没有设置。所以数据源的 tables
代码中必须相同
MySqlDataAdapter sda = new MySqlDataAdapter(@"SELECT invoive.per_ID,person.per_type,person.per_name,person.per_mobile,
invoive.INV_date,invoive.INV_no,invoive.INV_details,invoive.INV_Dr,invoive.INV_cr
FROM `invoive` INNER JOIN person ON invoive.per_ID = person.per_ID WHERE
invoive.INV_date BETWEEN '" + dateTimePicker1.Text + "' AND '" + dateTimePicker2.Text + "' AND invoive.per_ID ='" + textEdit1.Text + "' ORDER BY invoive.INV_date", con);
DataSet dst = new DataSet();
sda.Fill(dst, "invoive");
cryrptz1.Load(@"E:\Claasified\Company\FactoryManager\FactoryManager\CrystalReport6.rpt");
cryrptz1.SetDataSource(dst);crystalReportViewer1.ReportSource = cryrptz1;
int ii = dst.Tables[0].Rows.Count;
if (ii == 0)
{
// Here You can Send
}