把它放在InitializeComponent();的后面dt就是你的数据集
public void PirntTotal(System.Data.DataSet dt)
{
crystalreport1 crp = new crystalreport1 ();
crp.SetDataSource(dt.Tables[0]);
this.crystalReportViewer1.ReportSource = crp;
}

解决方案 »

  1.   

    把它放在InitializeComponent();的后面dt就是你的数据集
    没有明白这句话!?
    我用的是Access数据库,数据库没有密码什么的!
      

  2.   

    我的有密码,为什么搞不定,orale的
      

  3.   

    TO:snof(雪狼)
    就是把
    crystalreport1 crp = new crystalreport1 ();
    crp.SetDataSource(dt.Tables[0]);
    this.crystalReportViewer1.ReportSource = crp;
    拷贝到你的显示报表的语句InitializeComponent();的后面,
    ///////////////
    老大,我还是没有明白你上面所说的意思!DataSet我是明白了,也是这样做,代码如下:
    ...
    public MaterialsReporView()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    this.dataSet = new Dataset1();
    }
    ...
    private void btnReport_Click(object sender, System.EventArgs e)
    {
     ...
    Adapter.Fill(this.dataSet,"Materials");
    ...
    CrystalReport2 report= new CrystalReport2();
    report.SetDataSource(this.dataSet.Tables[0]);
    this.crystalReportViewer1.ReportSource = report;
    }
    //是不是这个意思?我想的代码就是这样的,生成的报表有多页,点击报表浏览器上的下一页按钮,它就叫我输密码什么的!
    急~~~谢谢!
    http://expert.csdn.net/Expert/topic/2138/2138517.xml?temp=.7873499
      

  4.   

    老大多谢了,问题解决了~~~~~
    原来是我的错误引起的!
    this.crystalReportViewer1.ReportSource = report;
    //report.Close();多了这一句!呆呆!
    结贴!
    //////////
    送分帖,UP一下分就是你的啦!
    http://expert.csdn.net/Expert/topic/2123/2123137.xml?temp=.643017