C# 如何在两个日期之间创建水晶报表
我尝试使用下面的代码,但它不起作用 我使用SQL查询将报表数据存储在C# 如何在两个日期之间创建水晶报表,c#,sql-server,sql-server-2008,crystal-reports,C#,Sql Server,Sql Server 2008,Crystal Reports,我尝试使用下面的代码,但它不起作用 我使用SQL查询将报表数据存储在ReportDataSet中。后来我将这个ReportDataSet设置为CrystalReport对象的DataSource private void btnGenReport_Click(object sender, EventArgs e) { CrystalReport1 objRpt = new CrystalReport1(); string sql; //creating
ReportDataSet
中。后来我将这个ReportDataSet
设置为CrystalReport
对象的DataSource
private void btnGenReport_Click(object sender, EventArgs e)
{
CrystalReport1 objRpt = new CrystalReport1();
string sql; //creating sql query
sql = "SELECT invoice.InvoiceNo, invoice.Date, invoiceitems.Name, invoice.InvoiceTo, invoice.CusName, invoiceitems.Qty, invoiceitems.Rate, invoiceitems.Amount ";
sql += "FROM (invoice INNER JOIN invoiceitems ON invoice.Date = invoiceitems.Date) ";
sql += "WHERE (invoice.Date BETWEEN '" + DateTimePickerFrom.Value + "' AND '" + DateTimePickerTo.Value + "');";
ReportDataSet ds = new ReportDataSet();
string path = Application.StartupPath + "\\";
string conStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + path + "SMS_DB.mdf;Integrated Security=True;User Instance=True";
SqlConnection con = new SqlConnection(conStr); // create connection
try
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds, "InvoiceItemData");
objRpt.SetDataSource(ds.Tables["InvoiceItemData"]);
crystalReportViewer1.ReportSource = objRpt;
con.close();
}
catch (Exception ex)
{
MessageBox.Show("Error ! \n" + ex.ToString());
}
}
我将假设一些事情:
ReportDataSet
,并且此文件中已存在数据rt1
,数据源为项目中类型化数据集ReportDataSet
中的表InvoiceItemData
btnReportGen
按钮单击之前的所有操作,并且您没有尝试在另一台机器上运行此版本
现在,我有一些建议和澄清要向你们提出
如果你考虑所有这些,我想你会发现自己的项目是正确的。然而,如果你仍然被困在这里,我可以浏览每个建议,并用截图和示例代码帮助你解决所有问题。如果你需要我做这件事,那没关系,因为我在VS2010中创建了大量Crystal Report项目,我只是根据经验告诉你,作为程序员和用户,什么最适合你。您可能认为通过以编程方式键入所有内容并将其扔到报表查看器中可以节省时间和资源,但这也是它不合作的原因。我将假设以下几点:
ReportDataSet
,并且此文件中已存在数据rt1
,数据源为项目中类型化数据集ReportDataSet
中的表InvoiceItemData
btnReportGen
按钮单击之前的所有操作,并且您没有尝试在另一台机器上运行此版本
现在,我有一些建议和澄清要向你们提出