其它各贴:
http://www.csdn.net/Expert/TopicView1.asp?id=921434
http://www.csdn.net/Expert/TopicView1.asp?id=921433
http://www.csdn.net/Expert/TopicView1.asp?id=921432
http://www.csdn.net/Expert/TopicView1.asp?id=921431
http://www.csdn.net/Expert/TopicView1.asp?id=921430

解决方案 »

  1.   

    this.sqlDataAdapter1.Fill(dataSet401);
    ReportDocument oRpt = new ReportDocument();//新建一个报表文档对象
    oRpt.Load(this.Server.MapPath("CrystalReport1.rpt")); //载入报表文件  
    oRpt.SetDataSource(dataSetName);//动态绑定dataSet
    CrystalReportViewer1.ReportSource = oRpt;//给报表查看器设置数据源
    this.CrystalReportViewer1.DisplayToolbar=false;
    this.CrystalReportViewer1.DataBind();
      不知道对你的问题有没有理解错。
      

  2.   

    点快了
    to zou_yi:
      我需要在程序中动态绑定dataset,之前并不知道有哪些字段,CrystalReport1.rpt应该如何设计?
      

  3.   

    1、注册码
    注册号: 6707437608
    密码: AAP5GKS0000GDE100DS
    2、分发到win98、win2K、winXP机器上:
    原理:
    用 Microsoft Installer (MSI)在您的安装包中包括的合并模块 (MSM) 分发。
    MSI 合并模块(MSM)可在“C:\Program Files\Common Files\Merge Modules”目录中找到。
    合并模块(MSM)分为三类:托管组件、数据库访问和密钥号码。
    托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间。对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,这样您的用户在查看报表时,就不会被要求注册他们的 Crystal版本。具体操作步骤:
    1)新建“安装和部署项目”-->“安装向导”
    2)选择项目类型(这里选“创建用于windows应用程序的安装程序”)-->下一步
    3)选择要包含的文件:添加你的程序文件 + C:\Program Files\Common Files\Merge Modules下的managed.msm、managed_chs.msm、database_access.msm、database_access_chs.msm、regwiz.msm、VC_CRT.msm、VC_STL.msm。-->完成具体功能如下:
    managed.msm、managed_chs.msm、(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
    database_access.msm、database_access_chs.msm、(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
    regwiz.msm、(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装)
    VC_CRT.msm、VC_STL.msm(这个在msdn上绝对没提起,是vc的运行库,估计是Crystal Report或涉及到的某些程序是用vc写的,所以需要它!)4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
    5)生成解决方案(或直接按Ctrl+Shift+B)至此CrystalReport的整个分发程序已经做好,所要做的是先在Win98装上dotNetFramework和MDAC27(在更新盘里有),再把刚才做的那个安装程序双击一下……如果没有意外的话,你的程序在windows平台上已经可以运行了,下面对大家平常做Crystal Report时会碰到的一些问题做一下总结:
    1、什么是拉和推模型
    答:简单的说拉就是直接从数据库中提取记录(静态),推则是用ADO.NET、ADO、DAO、CDO、RDO……等动态地从数据库中提取记录。
    2、license key是几位数的?
    答:len("AAP5GKS0000GDE100DS")
    3、分发到客户机时“查询引擎出错”
    答:那是因为没有安装VC的运行库:VC_CRT.msm、VC_STL.msm
    4、如何动态生成报表
    答:献上代码一段,希望对大家有帮助。
    private void btnPreview_Click(object sender, System.EventArgs e)
    {
    CrystalReport crpt = new CrystalReport();
    crpt.SetDataSource(DataSet);
    //
    //开始生成打印预览窗体
    //
    Form rptForm = new Form();
    rptForm.Text = "预览";
    rptForm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
    rptForm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
    CrystalDecisions.Windows.Forms.CrystalReportViewer rptView = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
    rptView.ReportSource = crpt;
    rptForm.Controls.Add(rptView);
    rptView.Dock = System.Windows.Forms.DockStyle.Fill;
    rptForm.Show();
    }仓促之余,难免有多处错误,还望各位大侠多多指教。有什么问题mailto:[email protected]
      

  4.   

    why not use Style/Report啊..专业的报表工具,全球财富100强有近1/2在用.
    www.inetsoft.com
    010-68941777 (美国英网北京公司)你可以象使用Word那样设计报表.(特容易).带有全新的Crystal 转换工具,可以完全将Crystal的所有报表转换到Style/Report的开放格式
      

  5.   

    555555555555...........我也有相同的总是...........up....up...up!
      

  6.   

    深有同感,我也是被报表折磨的神经衰弱,好不容量做好(我的机器W2K),却无法在用户的机器上正常使用报表(大部份用户还是W98)。我很奇怪,对于一个完整的解决方案,对报表的支持这样差!!!
      

  7.   

    最近公司购买了一个Web报表工具,叫Ming-WebReport,以下是本人使用Ming-WebReport的一点心得,跟大家交流分享一下:Ming-WebReport 是如何解决 “动态添加字段” 和 “动态绑定结果集” 问题的
    1、Ming-WebReport 动态数据绑定的实现原理
       Ming-WebReport报表工具有三部分:报表设计器、服务器端报表引擎和报表浏览器。   
       在报表模板中的动态数据有两种格式:独立的变量和格式公开的数据集。   <1>在报表模板中可以自定义变量参数,调用报表模板的页面可以动态为报表的变量赋值,
          变量类型支持所有基本变量类型(包括数组);
          报表和页面之间的参数传递就不多讲了,比较简单。
       <2>设计报表模板的过程中,绑定的查询或者DataSet仅仅作为报表设计的样例数据,样例数据的作用:
          A.确定结果集和对应的字段名称; 
          B.确定结果集的数据结构(如多级子报表、交叉报表等); 
          C.调试报表模板      注:获取样例数据的手段有多种:
              A.直接连结数据库(表/视图/SQL语句/存储过程); B.导入标准格式的XML文档。   <3>报表设计完成之后被部署到服务器端, 需要调用服务器端的报表引擎,动态绑定报表模板,为报表准备数据集。
          A.Ming-WebReport报表引擎支持大部分流行的Web开发环境,包括ASP、ASP.NET、J2EE和PHP。
            (这里以ASP.NET为例)
          B.为报表绑定数据集的时候,提供给报表的数据集的字段要包含报表需要的数据字段,字段名称一致就可以了。
            a. 直接绑定结果集的脚本示例,此时DataSet包含报表需要的数据集字段:
            MREngine engine = MyViewer.Engine;     //新建一个报表引擎对象
    engine.RootPath = "/YourApp/Reports/";   //设置报表目录的根路径(虚拟路径) //动态绑定dataSet,此处的数据集名称一定是设计报表期间设置的报表数据集名称。
    engine.AddDataTable("ReportDataSetName", MyDataSet.Tables["table1"]);   
    engine.Bind("MyReport"); // 动态绑定报表
            
    b. 手工构建报表数据集对象的脚本示例
    因为Ming-WebReport的报表数据集对象的格式是公开的,所以可以手工创建报表模板需要的数据集,
    这各功能是实现动态绑定结果集的关键。
    MRDataObject dataObj = new MRDataObject(this); //创建报表数据集对象 //1、创建数据集字段
    //方法:MRDataObject.AddField(String "FieldName", Type FieldType, int FiledSize)
    dataObj.AddField("FieldName1", typeof(String), 20); //创建一个字符型字段Filed1
    dataObj.AddField("FieldName2", typeof(int); //创建一个整型字段Field2
    //提示:上面的Type可以通过fieldValue.getType()来获得。        //2、以行为单位给数据集添加数据,
     //每次添加一行,方法:MRDataObject.AddRow(Array RowData); 参数是一个大小为字段个数的一维数组。
    dataObj.AddRow(new Object[]{"StringValue1",1});
    dataObj.AddRow(new Object[]{"StringValue2",2});
             //也可以一次添加多行,方法:MRDataObject.AddRows(Array Rows); 参数是包含多个行数据数组的数组。
    Object[]  rows=new Object[];
    rows(0) = new Object[]{"StringValul3",3};
    rows(1) = new Object[]{"StringValul4",4};
    dataObj.AddRows(rows);

            //3、为报表设置数据集,绑定报表。
            MREngine engine = MyViewer.Engine;     //新建一个报表引擎对象
    engine.RootPath = "/YourApp/Reports/"; //设置报表目录的根路径(虚拟路径)
    engine.AddDataTable("ReportDataSetName", dataObj); //动态绑定MRDataObject
    engine.Bind("MyReport"); // 动态绑定报表2、关于实现动态添加字段的方法
       报表设计完成之后,模板格式基本上已经确定了,而动态添加字段的要求会影响到报表的布局格式, 
       但是Ming-WebReport目前并没有公开用脚本动态修改模板格式的API
       不过可以借助变量参数来解决这个问题。
       <1>首先考虑到报表模板的格式问题,需要控制动态添加字段的最大数量,这个最大数量根据报表显示格式所能承受的数量为准。
          然后依照这个最大的字段数量来设计报表模板。
       <2>然后是处理动态字段的数据的显示。
          报表模板中需要动态控制的元素,如每个字段对应的Label,每个字段的值Value等,可以用数据集来动态显示内容。
          报表种的数据元素可以分为单行数据集和多行数据集,这些都可以根据需要定义不同的数据集。然后根据页面提供的
          数据集来动态的的显示数据。
          提示:单行数据也可以用变量来传递数据。
       <3>最后是动态字段的格式控制
          控制动态字段的格式需要用到Ming-WebReport提供的模板脚本,但是它可以解决一些麻烦的问题。
          控制动态字段需要定义专用的参数来标示要显示那些字段,要隐藏那些字段,然后我们就可以利用脚本,调用页面传递给报表
          的参数来决定显示那些字段,隐藏那些字段。
        至此动态添加字段的功能就实现了,实际上是根据报表格式所能承受的最大字段量来设计报表,此时字段都是临时的,运行期间
        哪些字段显示,哪些字段隐藏是根据页面传进来参数,利用脚本来控制的。
     
     3、总结
        目前Ming-WebReport还没有完全公开通过编码来动态创建、修改报表模板的功能,所以,处理这种动态字段的要求还不是十分
        方便。希望感兴趣的朋友一起讨论。
        
        相关网址:http://www.soft2web.com/Webreport/index.htm
      

  8.   

    To FreeHands(自由) :
       FreeHands大虾,太好了!我正在为此发愁呢!呵呵,多谢多谢!
       能否告诉我你的联系方法,以便有问题请教你。