关于水晶报表

aash0 2004-07-15 04:08:30
我以前从没有用过水晶报表,公司这次项目准备用水晶报表,各位谁有关于水晶报表的技术文档或者好的网站什么的能否给我介绍一下?如果实在没有什么好的网站,希望各位能给我介绍关于它的书也可以.
谢谢大家了:)
...全文
153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shellmark 2004-07-16
  • 打赏
  • 举报
回复
建议到官方的support网站去查资料,上面有很多很好的例子以及文章甚至补丁

http://support.businessobjects.com/search/
haonanernet 2004-07-15
  • 打赏
  • 举报
回复
经典水晶报表设计——单击表头排序表格

--------------------------------------------------------------------------------




1. 新建一个字符串类型的参数字段,名称为 URL,用于传递 ASP.NET 程序的网址和网址的部分参数。比如:"http://www.nt.cn/cr.aspx?sort_field="。

2. 右击作为表头的文本字段,选择"设置文本格式",进入"格式化编辑器"对话框。

3. 选择"超级链接"选项卡,并设置超级链接类型为"Internet 上的网址"。

4. 单击超级链接信息的网站地址后面的公式的钮,输入公式 {?URL} + "name"。

5. 这样表头就变成了超级链接,而且指向 http://www.nt.cn/cr.aspx?sort_field=name。

6. ASP.NET 程序在 Page_Load 事件里读取要排序的字段 sort_field,然后对水晶报表进行排序。

7. 水晶报表排序编程实例

Dim crReportDocument As ReportDocument

Public Sub changeSortField(mySortFld As String, mySortDir As String)

Dim crSortField As SortField
Dim crSortDirection As SortDirection
Dim crDatabaseFieldDefinition As DatabaseFieldDefinition

For Each crSortField In crReportDocument.DataDefinition.SortFields
If crSortField.Field.Name.ToString = mySortFld Then
crDatabaseFieldDefinition = crReportDocument.Database.Tables(0).Fields(mySortFld.ToString)
crSortField = crReportDocument.DataDefinition.SortFields(0)
crSortField.Field = crDatabaseFieldDefinition

If mySortDir = "Ascending" Then
crSortField.SortDirection = SortDirection.AscendingOrder
Else
crSortField.SortDirection = SortDirection.DescendingOrder
End If
End If
Next

CrystalReportViewer1.ReportSource = crReportDocument
End Sub

haonanernet 2004-07-15
  • 打赏
  • 举报
回复
一、Crystal Reports 9 最新补丁下载
二、原因1:文件夹 NTFS 权限的问题。
三、原因2:PULL 模式,水晶报表中的数据库登录问题(非 Windows 集成身份验证)。
四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
六、安全之道:crystalreport 的集成认证如何与NT(2K)SERVER集成?
七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
---------------------------------------------------------------
问题:
CrystalReports 登录失败
LogOnException
---------------------------------------------------------------
一、Crystal Reports 9 最新补丁下载
(1)Crystal Reports 9 Database and Export Drivers Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90dbexwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90dbexwin_en.zip
(2)Crystal Reports 9 Developer Files Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90devwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90devwin_en.zip
(3)Crystal Reports 9.0 Main Program Files Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90mainwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90mainwin_en.zip
---------------------------------------------------------------
二、原因1:文件夹 NTFS 权限的问题。
1、水晶报表 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

2、水晶报表文件所在的文件夹,或者导出时的目标文件夹 NTFS 权限的问题
(1)错误提示:
登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。

3、设置上述文件夹的“安全”,即 NTFS 权限:
最简单的办法是给 Everyone 用户加“完全控制”权限!
(1)为当前用户,如:Administrator,,添加“写入”权限;
(2)为用户 ASPNET、SYSTEM、匿名用户(通常为 IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限。
---------------------------------------------------------------
三、原因2:PULL 模式,水晶报表中的数据库登录问题。
运行时登录数据库服务器的方法(PULL 模式)
在报表的cs文件中,加上数据库连接。
1、设置 ReportDocument 的 TableLogonInfo……
Dim ReportDoc As New ReportDocument()
Dim logonInfo As New TableLogonInfo
Dim table As table
ReportDoc.Load("C:\Rpts\publish.rpt")
For Each table IN ReportDoc.DataBase.Tables
logonInfo= table.LogonInfo
with logonInfo.connectioninfo
.serverName= "Localhost"
.Databasename= "pubs"
.UserID= "sa"
.Password=""
End With
table.applyLogonInfo(logonInfo)
next table
Crviewer.reportsource = reportDoc

2、如果是多个相关的表作为报表的数据源,最好使用存储过程或者查询作为数据源。

3、将“数据库连接信息”存放在 web.config 配置文件,易维护。
using CrystalDecisions.Shared ; //负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports.Engine ; //负责解释ReportDocument类

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 ("cr.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.Database.Tables [0].ApplyLogOnInfo (logOnInfo);

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

DataBind();
}
---------------------------------------------------------------
四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
因为数据源是 DataSet,不是数据库!
---------------------------------------------------------------
五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
在开发机(2000)上运行,一切正常;移植到生产机(2003),就报错。错误提示:连接失败。错误的登录参数。
解决方案:
部署包少了点东西:
Crystal_Database_Access2003.msm
Crystal_Database_Access2003_chs.msm
这两个合并模块包含各种连接数据源的驱动。所以少了它,就老是提示登录失败(这种提示是不是很莫名其妙?)
---------------------------------------------------------------
六、安全之道:crystalreport 的集成认证如何与NT(2K)SERVER集成??
--------------------------------------
安全三要素:
模拟,验证,授权
--------------------------------------
如果运行 ASP.NET 程序,还需要为 ASPNET 账号——运行 ASP.NET 模拟的账号,做下述设置:
1、通过 Web 访问服务器,访问者默认“模拟”的是——Internet 来宾帐号,账号名:IUSR_计算机名;
2、“IUSR_计算机名”账号要访问 SQL SERVER,必须为该帐号建立“登录”(验证也!);
3、并授予“服务器角色”和“数据库访问许可”、“数据库角色”(授权也)!
--------------------------------------
参考:
1、匿名访问 Web 所模拟的账号
账号名:IUSR_计算机名
全名:Internet 来宾帐号
描述:匿名访问 Internet 信息服务的内置帐号
2、运行 ASP.NET 模拟的账号
账号名:ASPNET
全名:aspnet_wp account
描述:运行 ASP.NET 工作进程的账号
---------------------------------------------------------------
七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
1、错误提示:
“/MyWebApp”应用程序中的服务器错误。
用户 'PYPC101\ASPNET' 登录失败。
2、问题分析:
设计水晶报表时,在“数据库专家”的“连接信息”里使用了“集成安全”,即 Windows 集成身份验证。
3、解决方案:
要为 ASPNET 账号增加数据库登录和访问权限……
但这样不太适用,设计时最好使用数据库服务器的身份验证,用服务器的账号登录,比如:sa!
4、参考:三、原因2:水晶报表中的数据库登录问题。
goody9807 2004-07-15
  • 打赏
  • 举报
回复
7. 水晶报表排序编程实例

Dim crReportDocument As ReportDocument

Public Sub changeSortField(mySortFld As String, mySortDir As String)

Dim crSortField As SortField

Dim crSortDirection As SortDirection

Dim crDatabaseFieldDefinition As DatabaseFieldDefinition

For Each crSortField In crReportDocument.DataDefinition.SortFields

If crSortField.Field.Name.ToString = mySortFld Then

crDatabaseFieldDefinition = crReportDocument.Database.Tables(0).Fields(mySortFld.ToString)

crSortField = crReportDocument.DataDefinition.SortFields(0)

crSortField.Field = crDatabaseFieldDefinition

If mySortDir = "Ascending" Then

crSortField.SortDirection = SortDirection.AscendingOrder

Else

crSortField.SortDirection = SortDirection.DescendingOrder

End If

End If

Next

CrystalReportViewer1.ReportSource = crReportDocument

End Sub
chNET 2004-07-15
  • 打赏
  • 举报
回复

这里的书,都可以,大同小异:
http://community.csdn.net/Expert/topic/3147/3147354.xml?temp=.9306299

goody9807 2004-07-15
  • 打赏
  • 举报
回复
详细资料间距

  使用该框可以指定希望在详细资料间留出的空白区域(间距、装订线,等等)。水平 = 详细资料的横向间距,垂直 = 详细信息的纵向间距。
  
  确定希望允许的间距。在“水平”编辑框中输入数据水平间距,并在“垂直”编辑框中输入垂直间距。
  
  打印方向

  “打印方向”框使您能够指定程序在报表页上打印详细资料时所遵循的路径。选项有:
  
  先行后列

  从左到右打印各列中的详细资料,即先打印第一列中的第一则详细资料,然后打印下一列中的第一则详细资料,依此类推。然后,当所有列都包含详细资料后,程序沿着页面向下移动,打印第一列中的第二则详细资料,然后打印第二列中的第二则详细资料,依此类推。
  
  先列后行

  沿着第一列向下打印详细资料,然后沿着第二列,依此类推。
  
  格式化带有多列的组

  如果希望程序使用为选定节指定的“宽度”、“详细资料间距”和“打印方向”格式化带有多列的组,则选择该复选框。
  
  二、经典水晶报表设计三则之“单击表头排序表格”
  
  1. 新建一个字符串类型的参数字段,名称为 URL,用于传递 ASP.NET 程序的网址和网址的部分参数。比如:"http://www.nt.cn/cr.aspx?sort_field="。
  
  2. 右击作为表头的文本字段,选择"设置文本格式",进入"格式化编辑器"对话框。
  
  3. 选择"超级链接"选项卡,并设置超级链接类型为"Internet 上的网址"。
  
  4. 单击超级链接信息的网站地址后面的公式的钮,输入公式 {?URL} + "name"。
  
  5. 这样表头就变成了超级链接,而且指向 http://www.nt.cn/cr.aspx?sort_field=name。
  
  6. ASP.NET 程序在 Page_Load 事件里读取要排序的字段 sort_field,然后对水晶报表进行排序。
海峰 2004-07-15
  • 打赏
  • 举报
回复
水晶报表的使用很简单,设计好*.rpt文件后,用相应的控件浏览它就OK了,它的发布在网上一下能搜索到很多的例子
jackie615 2004-07-15
  • 打赏
  • 举报
回复
www.gmcc-it.com/xw/xw0005.htm
www.e-bluefield.com/dotnet8/article/list.asp?id=20
www.socent.com/dotnet/message.asp?id=314
itbooks.web165.com/bbs/show.asp?id=1014&bd=5

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧