大概步骤如下:
你在窗体里设计好强类型的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可以带参数的

解决方案 »

  1.   

    看我的代码,之前报表已经设计好
    这是取数据的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();
    }
    }