大概步骤如下:
你在窗体里设计好强类型的dataSet,也就就是你托拽sqlDataAdapter生成的dataSet
在项目中添加新项选择水晶报表,使用报表专家,在数据中选择项目数据,再选择ado.net数据集,就可以看见刚才生成的dataSet了
在窗体中你在工具箱中添加CrystalReportViewer控件
最后
this.Cursor = Cursors.WaitCursor;
CrystalDecisions.CrystalReports.Engine.ReportDocument crpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
crpt.Load(@"D:\crpt_input_find.rpt");
//Ds就是你要绑定的dataSet
crpt.SetDataSource(this.Ds);
this.crystalReportViewer1.ReportSource =crpt;
this.Cursor = Cursors.Arrow;
当然dataSet可以带参数的
你在窗体里设计好强类型的dataSet,也就就是你托拽sqlDataAdapter生成的dataSet
在项目中添加新项选择水晶报表,使用报表专家,在数据中选择项目数据,再选择ado.net数据集,就可以看见刚才生成的dataSet了
在窗体中你在工具箱中添加CrystalReportViewer控件
最后
this.Cursor = Cursors.WaitCursor;
CrystalDecisions.CrystalReports.Engine.ReportDocument crpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
crpt.Load(@"D:\crpt_input_find.rpt");
//Ds就是你要绑定的dataSet
crpt.SetDataSource(this.Ds);
this.crystalReportViewer1.ReportSource =crpt;
this.Cursor = Cursors.Arrow;
当然dataSet可以带参数的
解决方案 »
- 一个类似于词法分析器的C#listbox的问题
- windows服务无法暂停,用.paused()方法
- 在BITMAP上用GDI+画图,如何使画出的图像尽可能清晰?
- asp.net textbox内容用不同颜色显示
- Winform 线程中使用SqlConnection的时候,由于关闭服务器上sqlserver服务造成的问题?
- 请问VBA和.net有关系吗?
- 求救:客户和我们在技术方案上意见不同,怎么办?
- 这个后台没有代码,所以也跳转不了,我该怎么办?用的是DataList
- 数据库了连接问题
- 在C#中,怎样知道有那些计算机连接到我的计算机!
- 通过IE右键调用本地程序,就像Flashget一样,这个DLL是什么项目
- C#中如何实现鼠标拖动改变窗体大小?
这是取数据的form,得到DataSet后将其传给打印的form
private void btPrint_Click(object sender, System.EventArgs e)
{
PrintOrPreViewReport(true);
} private void btPreview_Click(object sender, System.EventArgs e)
{
PrintOrPreViewReport(false);
}
private void PrintOrPreViewReport(bool bPrint)
{
if(dsTTHMKK.Tables[0].Rows.Count<=0)
{
MessageBox.Show("当前没有可供打印的记录,请先选择条件并执行查询动作之后再打印。",this.Text);
return;
}
dsTTHMKK.WriteXml(SysInfo.sReportPath+@"JYYM.xml",System.Data.XmlWriteMode.WriteSchema);
string[] sParametername =new string[3]{"companyname","datefrom","dateto"};
string[] sParametervalue =new string[3]{"","",""};
sParametervalue[0]=SysInfo.sConame;
sParametervalue[1]=(dtDateFr.Checked)?dtDateFr.Value.ToShortDateString():"";
sParametervalue[2]=(dtDateTo.Checked)?dtDateTo.Value.ToShortDateString():"";
new frmReport(bPrint,"JYWZ.RPT",sParametername,sParametervalue,dsTTHMKK).ShowDialog(); }这是一个公用的打印form,其中放了一个crystalReportViewer1控件
private bool bPrint=false;
private string sReportname="";
private string[] sParametername;
private object[] sParametervalue;
private DataSet dsReport;
private void frmReport_Load(object sender, System.EventArgs e)
{
if(bPrint)this.Opacity =0;
else this.WindowState =System.Windows.Forms.FormWindowState.Maximized;
CrystalDecisions.CrystalReports.Engine.ReportDocument doc=new CrystalDecisions.CrystalReports.Engine.ReportDocument();
doc.Load(SysInfo.sReportPath+sReportname);
if(dsReport != null)doc.SetDataSource(dsReport.Tables[0]);
if(sReportname.StartsWith("CaseReport"))
{
doc.OpenSubreport("CaseSubReport1").SetDataSource(dsReport.Tables["procsk"]);
doc.OpenSubreport("CaseSubReport2").SetDataSource(dsReport.Tables["pathdrug"]);
} if(sParametername!=null)
{
for(int i=0;i<sParametername.Length;i++)
{
try
{
doc.SetParameterValue(sParametername[i],sParametervalue[i]);
}
catch(Exception ee)
{
MessageBox.Show("字段名称:"+sParametername[i]+"。"+ee.Message);
}
}
}
this.crystalReportViewer1.ReportSource=doc;
this.crystalReportViewer1.RefreshReport();
if(bPrint)
{
this.crystalReportViewer1.PrintReport();
this.Close();
}
}