1.mdi不能调用模式窗体,那如果想实现类似与模式窗体的功能改怎么做??
2.每次运行水晶报表预览数据,总会跳出数据库连接。且每次还连接不上,但主报表预览可以  代码如下:
 
  string strSelect = "select CheckDate,Contact,CheckCertificate,Name,Code,SerialNumber,ManufacturerID from Device,CheckLog where TaskID='325' and CheckLog.DeviceID=Device.ID ";
            DBO.sqlconn.Open();
            SqlDataAdapter da = new SqlDataAdapter(strSelect, DBO.sqlconn);
            DataSet ds = new DataSet();
            da.Fill(ds, "data");
            string path = Application.StartupPath + @"\CertificateCrystalReport1.rpt";
            rd.Load(path);
            rd.Database.Tables[0].SetDataSource(ds.Tables["data"]);   //对应报表设计的第一个数据表
            //rd.SetDataSource(ds.Tables["data"]);
            crystalReportViewer1.ReportSource = rd;
            DBO.sqlconn.Close();
         
请达人们帮忙看看是哪里出了问题,或者是另外改怎么写。

解决方案 »

  1.   

     erp类型的winform程序缺少不了水晶报表,在制作的过程中比较简单,总结起来,看下面的例子:
                  string conStr="workstation id=localhost;Integrated Security=SSPI;Database=caiwubook;";
                  SqlConnection cn=new SqlConnection(conStr);
                  cn.Open();
     
                  //调用储存过程,计算当前会计期间的资产负债表
                  SqlCommand cmd=cn.CreateCommand();
                  int index=Convert.ToInt32(this.numericUpDown1.Value);
                  cmd.CommandText="exec sf_计算资产负债表 "+index.ToString();
                  cmd.ExecuteNonQuery();
                  //显示资产负债报表
                  string sql="select * from 资产负债表 where 会计期间='"+index.ToString()+"'";
                  SqlDataAdapter da=new SqlDataAdapter(sql,cn);
                  DataSet ds=new DataSet();
                  da.Fill(ds);
                  CrystalReport1 rpt=new CrystalReport1();
                  //连接报表数据源
                  rpt.SetDataSource(ds.Tables[0]);
                  crystalReportViewer1.ReportSource=rpt;
      

  2.   

    水晶报表打开时,偶尔出现连接数据库的界面解决方法:            rptDoc.SetDataSource(ds);        
                rptView.ReportSource = rptDoc;这二条语句需要正确的顺序,如果反了,就可能出现这种问题。
      

  3.   

    加上这句也不行 rd.SetDatabaseLogon("sa", "1", "seer", "sdf");
      

  4.   

    你可以直接绑定一个数据源吗?在两个select语句之间用Union连接起来
      

  5.   

    回14楼,完全可以如果这两个表是有关联的,那么直接用一个报表就可以了
    在水晶报表中加入两个表1和表2,然后按表1的字段分组就可以了如果无关联,可以把表2做在一个子报表里
    c#中只要做setdatasource就可以了,不需要特殊处理
    将两个datatable写入到一个dataset里即可
      

  6.   

    mdi不能调用模式窗体?
    是不是理解错误,Mdi怎么可能不能显示模式窗体,
    Form.ShowDialog()显示的就是模式窗体,关于MDI的一些设计可以参考这里,写的不错,浅谈Windows Forms应用程序模型
    http://blog.csdn.net/zhzuo/archive/2008/07/23/2700053.aspx