您的位置:首页 > 其它

水晶报表常见问题(挺不错的)

2010-06-01 09:33 239 查看

自定义水晶报表查看器的外观

目录

1、隐藏/显示查看器的各组成部分,如:树视图、工具栏。
2、隐藏/显示工具栏按钮。
3、控制查看器在 Web 页面里的布局。
4、去除水晶报表的公司LOGO。
5、替换工具栏按钮的图片。

1、隐藏/显示查看器的各组成部分,如:树视图、工具栏。
设置 Crystal Report Viewer 的属性:
BestFitPage 布尔值。获取或设置页面视图是大小合适还是用滚动条进行裁剪。配合设置 Width、Height 来实现无空白和无滚动条的显示!
DisplayGroupTree 布尔值。获取或设置树视图是可见还是隐藏。
DisplayPage 布尔值。获取或设置工具栏是可见还是隐藏。
DisplayToolbar 布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。
PageZoomFactor Int32。获取或设置报表的缩放因数。
SeparatePages 布尔值。获取或设置报表页是分开还是连接。
PageToTreeRatio Float64。设置组树与报表视图之间的大小比例。

2、隐藏/显示工具栏按钮。
设置 Crystal Report Viewer 的属性:
HasGotoPageButton 布尔值。获取或设置转到页按钮的可见性。
HasLevelUpButton 布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。
HasPageNavigationButtons 布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。
HasRefreshButton 布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。
HasSearchButton 布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。
HasZoomFactorList 布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。

3、控制查看器在 Web 页面里的布局。
在“设计视图”,修改 CrystalReportViewer 的 Width、Height 属性。
切换到窗体的“HTML 视图”,修改 style 属性。

4、去除水晶报表的公司LOGO。
将 Crystal 公司的Logo 文件替换或删除。
(1)如果是用 VS.NET 里自带的水晶报表
C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers\images\ToolBar\logo.gif
(2)如果是用水晶报表 9.2
C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers\images\toolbar\crlogo.gif

5、替换工具栏按钮的图片。
(1)如果是用 VS.NET 里自带的水晶报表
C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers\images
(2)如果是用水晶报表 9.2
C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers\images

登录失败

目录

1、文件夹 NTFS 权限的问题
2、PULL 模式下,数据库登录问题 (Windows 集成身份验证)
3、PULL 模式下,数据库登录问题 (非 Windows 集成身份验证)
4、PUSH 模式下,画蛇添足登录数据库。
5、部署时出错:连接失败。错误的登录参数。

概述

登录失败是水晶报表 Web 应用的一个常见问题,涉及账号模拟、身份验证方式、数据库安全、NTFS 权限这些方方面面的安全问题。
1. 模拟
用户访问 ASP.NET 程序时,通常模拟的是 ASPNET 账号。也可能是当前用户、SYSTEM 账号等。
2. 验证
(1) 登录数据库需要验证用户的身份。
如果采用非 Windows 集成身份验证,则需要提供正确的登录用户名和密码。如果用户名或密码错误,则登录失败。
而采用 Windows 集成身份验证,会自动用用户模拟的账号登录。
(2) 访问 NTFS 文件夹时也需要验证用户的身份。验证的是用户模拟的账号。
3. 授权
(1) 数据库安全采用 Windows 集成身份验证时,如果用户模拟的账号没有登录权限,则出现登录失败。
(2) 访问 NTFS 文件夹时,如果用户模拟的账号没有相应的 NTFS 权限,也会出现登录失败。

1、文件夹 NTFS 权限的问题
(1) 水晶报表 Web 查看器文件夹
VS.NET 内置的水晶报表:C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers
水晶报表 9.x:C:\Program Files\Common Files\Crystal Decisions\2.0\crystalreportviewers
错误提示:“/WebApplication1”应用程序中的服务器错误。登录失败。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
(2) 报表文件所在的文件夹,或者导出时的目标文件夹。
错误提示:s登录失败。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
(3) 解决方案
在资源管理器里设置上述文件夹的“安全”,即 NTFS 权限。
为用户 ASPNET 添加“写入”权限。
如果问题仍然存在,为用户 Everyone 添加“完全控制”权限。

2、PULL 模式下,数据库登录问题 (Windows 集成身份验证)
(1) 错误提示
“/MyWebApp”应用程序中的服务器错误。
用户 'PYPC101\ASPNET' 登录失败。
(2) 问题分析
设计水晶报表时,在“数据库专家”的“连接信息”里使用了“集成安全”,即采用了 Windows 集成身份验证。
(3) 解决方案
要为 ASPNET 账号增加数据库登录和访问权限……
但这种安全措施不太适用,设计时最好使用非 Windows 集成身份验证,用服务器的账号登录,比如:sa。

3、PULL 模式下,数据库登录问题 (非 Windows 集成身份验证)
运行时读取 web.config 中服务器及账号信息,并登录数据库服务器。

using CrystalDecisions.Shared ; //负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports.Engine ; //负责解释ReportDocument类

private void Page_Load(object sender, System.EventArgs e)
{
string rptPath;
rptPath=Server.MapPath ("analysis.rpt");
oRpt.Load (rptPath;);

//从web.config中获取服务器及账号信息
string serverName, dbName, userName, password;

serverName = System.Configuration.ConfigurationSettings.AppSettings ["serverName"];
dbName = System.Configuration.ConfigurationSettings.AppSettings ["dbName"];
userName = System.Configuration.ConfigurationSettings.AppSettings ["userName"];
password =System.Configuration.ConfigurationSettings.AppSettings ["password"];

//登录数据库
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;

// 对报表中的每个表依次循环。
for (i=0;i == Report.Database.Tables.Count - 1;i++)
{
// 设置当前表的连接信息。
logOnInfo.ConnectionInfo.ServerName = serverName;
logOnInfo.ConnectionInfo.DatabaseName = dbName;
logOnInfo.ConnectionInfo.UserID = userName;
logOnInfo.ConnectionInfo.Password = password;
Report.Database.Tables [i].ApplyLogOnInfo (logOnInfo);
}

//建立.rpt文件与CryStalReportviewer文件之间的连接
CrystalReportViewer1.ReportSource = oRpt;

CrystalReportViewer1.DataBind();
}

4、PUSH 模式下,画蛇添足登录数据库。
PUSH 模式使用程序里的数据集作为数据源,不需要登录数据库。

5、部署时出错:连接失败。错误的登录参数。
部署包缺少了负责数据源读写的管理模块:Crystal_Database_Access2003.msm、Crystal_Database_Access2003_chs.msm。



//Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>

我用的是VB.NET 语言是VB.NET 不是C# 楼上 说的都是关于C#地解决方案 那我的问题怎么解决呢 请看一下:

登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[LogOnException: 登录失败。]
.F(String  , EngineExceptionErrorID 
)
.A(Int16 , Int32 )
.@(Int16 )
CrystalDecisions.CrystalReports.Engine.FormatEngine.GetPage(PageRequestContext reqContext)
CrystalDecisions.ReportSource.LocalReportSourceBase.GetPage(PageRequestContext pageReqContext)
CrystalDecisions.Web.ReportAgent.u(Boolean N)
CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs e)
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Control.PreRenderRecursiveInternal()
System.Web.UI.Page.ProcessRequestMain()

为什么我的toolbar的图片显示不出来呢

我未使用集成crystal登录方式,直接打开的报表文件,不需要集成登录.实现方式是在aspx页面上添加一个<CR:CrystalReportViewer ../>控件,然后在代码中找到相应的报表文件(绝对路径),设置相应的区域和时间参数,显示出来即可.
viewer.ReportSource = "D:\rpt\test_rpt_file";

ParameterFields paramFields = new ParameterFields();

ParameterField pfItemId = new ParameterField();
pfItemId.ParameterFieldName = "CityCode";
ParameterDiscreteValue dcItemId = new ParameterDiscreteValue();
dcItemId.Value = ddlCity.SelectedValue;
pfItemId.CurrentValues.Add(dcItemId);

ParameterField pfItemMonth = new ParameterField();
pfItemMonth.ParameterFieldName = "year_month";
ParameterDiscreteValue dcItemMonth = new ParameterDiscreteValue();
dcItemMonth.Value = int.Parse(GetDateValue());
pfItemMonth.CurrentValues.Add(dcItemMonth);

paramFields.Add(pfItemId);
paramFields.Add(pfItemMonth);

viewer.ParameterFieldInfo = paramFields;


在vs2k5中crystal版本比vs2k3要高,好象是看不到图片,具体原因我也不太明白,指向的图片路径在IIS中没有的. 我的解决方案是将安装的crystal图片路径设置为相应的IIS指向路径.

我用VS.NET2003自带的水晶报表,开发WEB应用。
假如我的报表数据共有5页,我希望在一个页面上显示所有5页的内容,请问有办法吗?
注意:不可以设置 SeperatePages=False,这样的话,显示的是一个“大页”,我要的是连在一起的5个正常页,有5个页眉和页脚。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: