Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19001524
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 数据库开发技术

2008-05-28 15:36:55

下面将关于水晶报表的使用笔记如下:
  • 水晶报表 Web 查看器文件夹 NTFS 权限的问题
    (1)错误提示:
    “/WebApplication1”应用程序中的服务器错误。
      登录失败。
      说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
      异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
    (2)相关文件夹:
    VS.NET Crystal Reports: C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers
    Crystal Reports 9.2: C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers
  • 水晶报表文件所在的文件夹,或者导出时的目标文件夹 NTFS 权限的问题
    (1)错误提示:
    登录失败。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
    异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
  • 设置上述文件夹的“安全”,即 NTFS 权限:
    最简单的办法是给 Everyone 用户加“完全控制”权限!
    (1)为当前用户,如:Administrator,,添加“写入”权限;
    (2)为用户 ASPNET、SYSTEM、匿名用户(通常为 IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限。
  • 在PULL模式下使用水晶报表

using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;

{

   TableLogOnInfo log = new TableLogOnInfo();
   log.ConnectionInfo.ServerName = "wudi";
   log.ConnectionInfo.DatabaseName = "YabOA";
   log.ConnectionInfo.UserID = "asp.net";
   log.ConnectionInfo.Password = "exit";
   ReportDocument rd = new ReportDocument();
   string RptPath = null;
   
   RptPath =Server.MapPath("CrystalReport2.rpt");
   rd.Load(RptPath);
   rd.Database.Tables[0].ApplyLogOnInfo(log);

   this.CrystalReportViewer1.ReportSource = rd;

   this .CrystalReportViewer1.DataBind();

}

  • 在PUSH模式下使用
    1. 生成一个数据集文件,然后创建要查询信息的结构(可从数据库中托经来),然后生成项目
    2. 添加Crystal Reports组件,并设置相关信息,字段连接到刚才生成的数据集文件中的表(如果刚才创建后没有生成项目,这里看不到那个数据集文件的表格)
    3. 代码如下:

using CrystalDecisions.Shared;
using System.Configuration;

{

  string connectString = "server=.;user id=ASP.NET;initial    catalog=Yaboa;password=exit";
   SqlConnection MyConnection = new SqlConnection(connectString);
   MyConnection.Open();
   string sqlstring = "select xh,sh,qy from baseinfoVwOfZb";

   SqlDataAdapter MyCommand = new SqlDataAdapter(sqlstring,MyConnection);
   DataSet ds = new DataSet();
   MyCommand.Fill(ds,"baseinfoVwOfZb");   
   YabOA.CrystalReport1 cr1 = new YabOA.CrystalReport1();     
   cr1.SetDataSource(ds.Tables["baseinfoVwOfzb"]);
   this.CustomerOrderCRViewer.ReportSource = cr1;

}

  • 说明

在web中和在windowsApplication中水晶报表的使用略有不同。在Web中经常会遇到权限的问题。

阅读(428) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~