web 无法显示水晶报表 
我已在DataBindings中设置了ReportSource,在webform中可以显示,可在浏览器里却总显示CrystalReportViewer - CrystalReportViewer1 
使用 ReportSource 或 DataBindings 属性来指定报表源。 我用的水晶报表是9.2.3300.0
vs.net2003

解决方案 »

  1.   

    你试试动态指定数据源,给你我用的一段试历代码
    rpt_p_basic oCR=new rpt_p_basic();
    DataSet ds =new DataSet();
    con.Open();
    SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr,con);
    MyAdapter.Fill(ds,"表名");
    oCR.SetDataSource(ds);
    this.CrystalReportViewer1.ReportSource = oCR;
    con.Close();
      

  2.   

    现在成了
    加载报表失败。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: 加载报表失败。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [LoadSaveReportException: 加载报表失败。]
       CrystalDecisions.Web.ReportAgentBase.m()
       CrystalDecisions.Web.ReportAgent.get_RequestContext()
       CrystalDecisions.Web.ReportAgent.get_()
       CrystalDecisions.Web.ReportAgent.{(Boolean C)
       CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs e)
       System.Web.UI.Control.PreRenderRecursiveInternal() +62
       System.Web.UI.Control.PreRenderRecursiveInternal() +125
       System.Web.UI.Control.PreRenderRecursiveInternal() +125
       System.Web.UI.Page.ProcessRequestMain() +1489 
    --------------------------------------------------------------------------------
    版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
      

  3.   

    你的报表指定的是pdf文件还是根据数据源生成的?
      

  4.   

    谁有写好的实例源码给我发一份好吗?
    [email protected]
      

  5.   

    一、在使用自带的水晶报表时,请注册,否则只能使用30次二、使用CrystalReportViewer进行预览
    CrystalReportViewer控件允许在应用程序中查看 Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。
    1.打开“工具箱”,并将一个 CrystalReportViewer 拖到窗体上,我们命名为rptVew。 
    2.通过拖放操作将 Windows 窗体查看器调整到希望的大小并将其移动到所需位置。 
    3.当运行应用程序时,报表将显示在查看器中。
    三、创建新报表
    1.指向“添加”,单击“添加新项”。 
    2.在“添加新项”对话框中,从“模板”区域选择 Crystal Report,将报表命名为rptClient,单击“打开”。 
    3.在 Crystal Report 库中,选择下列选项之一: 
    •使用报表专家 — 指导您完成报表的创建过程,并将您的选择添加到 Crystal Report Designer。 
    •作为空白报表 — 打开 Crystal Report Designer。 
    •来自于现有的报表 — 创建新报表,它与指定的另一报表设计相同。 
    注意   Crystal Report 库包含许多专家,可以指导您完成数个特定类型报表的创建工作。您可能希望使用专家来创建最初的报表,以确定哪种报表构造方法适合您的需要。
    4.单击“确定”按钮。 
    如果选择使用“报表专家”,便会出现“报表专家”对话框,并带有数据资源管理器。为每个文件夹选择所需数据,完成“报表专家”选项卡界面上的操作,然后单击“完成”来访问 Crystal Report Designer 和您的报表
    四、是否需要动态设置数据源?
    Crystal Reports 通过数据库驱动程序与数据库连接。每个驱动程序都被编写为可处理特定数据库类型或数据库访问技术。 
    拉和推模型
    为了向开发人员提供最灵活的数据访问方法,Crystal Reports 数据库驱动程序被设计为可同时提供数据访问的拉模型和推模型。 
    拉模型
    在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的 SQL 命令都同时由 Crystal Reports 本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。
    推模型
      

  6.   

    相反,推模型需要开发人员编写代码以连接到数据库,执行 SQL 命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在 Crystal Reports 收到数据之前先将数据筛选出来。 四、从 ADO.NET 数据集制作报表
    从数据库创建数据集对象
    1.在项目中新建一个架构文件: 
    a.在解决方案资源管理器中,右击项目名,指向“添加”,然后单击“添加新项”。 
    b.在“添加新项”对话框的“类别”区域,展开文件夹,然后选择“数据”。 
    c.在“模板”区域选择“数据集”。 
    d.接受默认名称 Dataset1.xsd。 
    这就创建了一个新的架构文件 (Dataset1.xsd),以后将用它来生成强类型数据集。该架构文件将显示在 ADO.NET 数据集设计器中。 
    2.指定数据库位置: 
    a.在服务器资源管理器中,右击“数据连接”并选择“添加连接”。 
    b.在“数据链接属性”对话框中,单击“提供程序”选项卡,然后选择一个提供程序(例如 Microsoft OLE DB Provider for SQL Server)。 
    c.单击“连接”选项卡,然后指定您的数据库所在位置。在所需位置输入服务器和登录信息。 
    d.单击“确定”按钮。 
    此时,您的数据库及其表和字段就出现在服务器资源管理器的“数据连接”节点下面。 
    3.在解决方案资源管理器中,双击 Dataset1.xsd (如果它尚不是活动视图)。 
    Dataset1.xsd 现在应显示在“数据集”选项卡中。 
    4.若要为数据集建立架构,请将需要的表从服务器资源管理器中拖动到 Dataset1.xsd 的“数据集”选项卡上。 
    5.单击“保存 Dataset1.xsd”来保存“Dataset1.xsd”文件。 
    6.在“生成”菜单上,单击“生成”为项目生成数据集对象。 
    ADO.NET 数据集对象提供数据的描述,从它可以向 Crystal report 添加表。使用 Crystal Report Designer 中的“数据库专家”从 ADO.NET 数据集对象添加表。 
    请在使用“报表专家”创建新报表时调用“数据库专家”。或者,要从一个已经使用 ADO.NET 建立好的报表中访问“数据库专家”,请在 Report Designer 中右击,指向“数据库”,然后单击“添加/删除数据库”。
    将报表连接到 ADO.NET 数据集对象 
    1.在“数据库专家”中,展开“项目数据”文件夹。 
    2.展开“ADO.NET 数据集”文件夹。 
    3.选择所需数据集对象。 
    例如,如果当时使用的是从项目“WindowsApplication1”的架构文件“Dataset1.xsd”中生成的数据集对象,则应该选择“WindowsApplication1.Dataset1”。 
    4.选择要向报表中添加的表,和使用其他数据源一样。 
    五、动态改变数据源的代码
     
              Dim dsdataSet As New DataSet()
                    Dim oRpt As New rptClient()   '已建立的报表rptClient
                    请读者自行填充数据集dsdataSet 
                    '使用“报表引擎”对象模型将填充的数据集,传递给报表
                    oRpt.SetDataSource(dsdataSet.Tables(0))
                    ' 将带有数据的报表对象绑定到 Windows 窗体查看器,rptVew(CrystalReportViewer控件)
                    rptVew.ReportSource = oRpt
      

  7.   


     处理 "Me.reportDocument1 = New CrystalDecisions.CrystalReports.Engine.ReportDocument"
    这行代码的时候出现
    未处理的“System.UnauthorizedAccessException”类型的异常出现在 crystaldecisions.crystalreports.engine.dll 中。其他信息: 拒绝访问。
      

  8.   

    给你一个我写的详细用法吧,using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Configuration;
    using System.Data.SqlClient;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.ReportSource;
    using CrystalDecisions.Shared;
    using System.Resources;
    namespace web3
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    TableLogOnInfo logOnInfo=new TableLogOnInfo(); //这里必须事先申明一个ReportDocument对象 Report,同时加载数据报表
    ReportDocument oRpt=new ReportDocument();
    //获取.rpt文件真实路径
    string path;
    path=Server.MapPath("wxwf.rpt");
    oRpt.Load(path);
    //从web.config中获取logOnInfo参数信息
    string a,b,c,d;
    //获取ServerName
    a=System.Configuration.ConfigurationSettings.AppSettings ["servername"]; //获取DatabaseName
    b=System.Configuration.ConfigurationSettings.AppSettings ["database"];
    //获取UserId
    c=System.Configuration.ConfigurationSettings.AppSettings ["userid"];
    //获取password
    d=System.Configuration.ConfigurationSettings.AppSettings ["pass"];
    //设置logOnInfo参数
    logOnInfo.ConnectionInfo.ServerName=a;
    logOnInfo.ConnectionInfo.DatabaseName=b;
    logOnInfo.ConnectionInfo.UserID=c;
    logOnInfo.ConnectionInfo.Password=d;
    //oRpt.Load("H:\\mm.rpt");
    try
    {
    oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);
    }
    catch(Exception ex)
    {
    Response.Write(ex);
    }
    String ttm="LYHDWH2004122112"; //
    String sqlstring1 = "select * from P_WXWH where DH='" + ttm + "'";

    String strConn=ConfigurationSettings.AppSettings["ConnectionString"];

    SqlConnection cn=new SqlConnection(strConn);

    cn.Open();                     
         
          
    System.Data.SqlClient.SqlDataAdapter thedataadapter1=new System.Data.SqlClient.SqlDataAdapter(sqlstring1,cn); System.Data.DataSet thedata1=new System.Data.DataSet();
         
    thedataadapter1.Fill(thedata1,"P_WXWH");          //JTSJ
    String str=thedata1.Tables["P_WXWH"].Rows[0]["JTSJ"].ToString();
    DateTime jtsj=Convert.ToDateTime(str);
                //年
    TextObject rxn;
                rxn=oRpt.ReportDefinition.ReportObjects["rxn"] as TextObject;            rxn.Text=jtsj.Year.ToString(); TextObject rxy;
    rxy=oRpt.ReportDefinition.ReportObjects["rxy"] as TextObject; rxy.Text=jtsj.Month.ToString(); TextObject rxr;
    rxr=oRpt.ReportDefinition.ReportObjects["rxr"] as TextObject; rxr.Text=jtsj.Day.ToString(); TextObject rxs;
    rxs=oRpt.ReportDefinition.ReportObjects["rxs"] as TextObject; rxs.Text=jtsj.Hour.ToString();           
    TextObject rxf;
    rxf=oRpt.ReportDefinition.ReportObjects["rxf"] as TextObject; rxf.Text=jtsj.Minute.ToString(); //JTSJ
    //XYSJ
    String str1=thedata1.Tables["P_WXWH"].Rows[0]["XYSJ"].ToString();
    DateTime xxsj=Convert.ToDateTime(str1);

    TextObject xyr;
    xyr=oRpt.ReportDefinition.ReportObjects["xyr"] as TextObject;
    xyr.Text=xxsj.Day.ToString(); TextObject xys;
    xys=oRpt.ReportDefinition.ReportObjects["xys"] as TextObject; xys.Text=xxsj.Hour.ToString();           
    TextObject xyf;
    xyf=oRpt.ReportDefinition.ReportObjects["xyf"] as TextObject; xyf.Text=xxsj.Minute.ToString(); //XYSJ
                 
    String str2=thedata1.Tables["P_WXWH"].Rows[0]["YYSJ"].ToString();
    DateTime yysj=Convert.ToDateTime(str2);

    TextObject yyr;
    yyr=oRpt.ReportDefinition.ReportObjects["yys"] as TextObject;
    yyr.Text=yysj.Day.ToString(); TextObject yys;
    yys=oRpt.ReportDefinition.ReportObjects["yys"] as TextObject; yys.Text=yysj.Hour.ToString();           
    TextObject yyf;
    yyf=oRpt.ReportDefinition.ReportObjects["yyf"] as TextObject; yyf.Text=yysj.Minute.ToString(); //XXSJ
    //DDSJ
                 
    String str3=thedata1.Tables["P_WXWH"].Rows[0]["DDSJ"].ToString();
    DateTime ddsj=Convert.ToDateTime(str3);

    TextObject ddr;
    ddr=oRpt.ReportDefinition.ReportObjects["ddr"] as TextObject;
                 ddr.Text=ddsj.Day.ToString(); TextObject dds;
    dds=oRpt.ReportDefinition.ReportObjects["dds"] as TextObject;
                 dds.Text=ddsj.Hour.ToString();           
    TextObject ddf;
    ddf=oRpt.ReportDefinition.ReportObjects["ddf"] as TextObject; ddf.Text=ddsj.Minute.ToString(); //DDSJ //WCSJ
                 
    String str4=thedata1.Tables["P_WXWH"].Rows[0]["WCSJ"].ToString();
    DateTime wcsj=Convert.ToDateTime(str4);

    TextObject wcr;
    wcr=oRpt.ReportDefinition.ReportObjects["wcr"] as TextObject;
    wcr.Text=wcsj.Day.ToString(); TextObject wcs;
    wcs=oRpt.ReportDefinition.ReportObjects["wcs"] as TextObject;
    wcs.Text=wcsj.Hour.ToString();           
    TextObject wcf;
    wcf=oRpt.ReportDefinition.ReportObjects["wcf"] as TextObject; wcf.Text=wcsj.Minute.ToString(); //DDSJ //HFSJ
    String str5=thedata1.Tables["P_WXWH"].Rows[0]["HFSJ"].ToString();
    DateTime hfsj=Convert.ToDateTime(str5);
    //年
    TextObject hfn;
    hfn=oRpt.ReportDefinition.ReportObjects["hfn"] as TextObject; hfn.Text=hfsj.Year.ToString(); TextObject hfy;
    hfy=oRpt.ReportDefinition.ReportObjects["hfy"] as TextObject; hfy.Text=hfsj.Month.ToString(); TextObject hfr;
    hfr=oRpt.ReportDefinition.ReportObjects["hfr"] as TextObject; hfr.Text=hfsj.Day.ToString(); TextObject hfs;
    hfs=oRpt.ReportDefinition.ReportObjects["hfs"] as TextObject; hfs.Text=hfsj.Hour.ToString();           
    TextObject hff;
    hff=oRpt.ReportDefinition.ReportObjects["hff"] as TextObject; hff.Text=hfsj.Minute.ToString(); //HFSJ CrystalReportViewer1.ReportSource=oRpt;
    CrystalReportViewer1.SelectionFormula="{P_WXWH.DH}='" + ttm + "'";     CrystalReportViewer1.DataBind();

    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    }
    }