以web应用为例吧
首先,新建一个Asp.net CrystalReports站点,出现水晶报表向导,点击确定后们选择创建新连接,填写数据库参数。连接成功后,会显示数据库中的表,选择需要的表,进入模板界面,然后就可以进行相应的代码的编写啦。
using System
using System.Data
using System.Configuration
using System.Web
using System.Web.Security
using System.Web.UI
using System.Web.UI.WebControls
using System.Web.UI.WebControls.WebParts
using System.Web.UI.HtmlControls
using CrystalDecisions.Shared
using CrystalDecisions.CrystalReports.Engine
using CrystalDecisions.Web
public partial class _Default : System.Web.UI.Page
{
//水晶报表对象
private ReportDocument myReport
private void ConfigureCrystalReports()
{
// 定义ReportDocument对象,装载Crystalreport1.rpt
myReport = new ReportDocument()
string reportPath = Server.MapPath("Crystalreport1.rpt")
myReport.Load(reportPath)
//定义水晶报表的数据库连接信息
ConnectionInfo connectionInfo = new ConnectionInfo()
connectionInfo.DatabaseName = "user"
connectionInfo.UserID = "pwd"
connectionInfo.Password = "****"
connectionInfo.ServerName = "myoraServer"
//将数据库信息传递给报表
SetDBLogonForReport(connectionInfo, myReport)
//把模板对象赋给报表前端呈现控件CrystalReportViewer1
CrystalReportViewer1.ReportSource = myReport
}
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Tables tables = reportDocument.Database.Tables
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo
tableLogonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(tableLogonInfo)
}
}
// 注意:将代码防到Page_Init或Page_Load 中
//VS2008必须放到Page_Init中
private void Page_Init(object sender, EventArgs e)
{
ConfigureCrystalReports()
}
}
再运行一些就可以了。通过更改代码里面的数据库连接,可以切换到不同的数据库中,具体的话我也不是特别清楚,题主可以尝试下。毕竟我也有很长时间没有用水晶报表了呢,总感觉动不动写代码啥的挺烦的,后来经同学介绍,用了零代码基础的FineReport,感觉倒是轻松了许多。
一,水晶报表如何对字段取值:1、将crystalReportViewer控件拖至界面2、选择报表源->新建报表源3、指定crystal报表->新建报表->输入名称并点击确定4、点击确定,在d出的界面中,均采用默认值,点击确定5、如果用的是sql数据库,选择OLE DB(ADO)6、在d出窗口中选择SQLserver,下一步7、输入服务器的相关信息,选择数据库,点击下一步8、点击完成9、在可用数据源里就能看到刚才添加的那个,选中数据库的要显示的表名,点击>按钮,下一步10、点击表名前面的+,可以看到表中的所有字段,选中某个后,点击>按钮,直到需展示的字段选择完,下一步11、根据提示选择分组、汇总、排序的方式,,点完成。如果不需设置,步骤10 完成之后直接点完成12、运行,就可以看到结果了。
二,水晶报表动态添加图片:要连接远程数据库,最起码要有个远程数据服务才行啊,比如SQL数据库服务,据俺所知ACCESS没那功能。如果是要连接远程数据服务,也不在RPT里,应该是在RS里,让RS打开远程数据,RPT引用RS里的数据
Dim x As PictureSet x = LoadPicture("图片路径")
Set rptProduce.Sections("Section2").Controls("报表控件名").Picture = x将动态图片转换成JPG格式就可以啦。</p>格式转换器下载地址: http://bbs.meiyatt.com/
添加新项---rdlc报表----然后为报表配置数据源----然后设计报表:点报表里的工具箱添加柱状图即可。//声明报表的数据对象
CrystalDecisions.CrystalReports.Engine.Database crDatabase
CrystalDecisions.CrystalReports.Engine.Table crTable
TableLogOnInfo dbConn = new TableLogOnInfo()
// 创建报表对象
CrystalReportSource oRpt = new CrystalReportSource() //CrystalReportSource
// 加载已经做好的报表
oRpt.Load()
//连接数据库,获得相关的登陆信息
crDatabase = oRpt.Database
//定义一个arrtables对象数组
object[] arrTables = new object[1]
crDatabase.Tables.CopyTo(arrTables, 0)
crTable = (CrystalDecisions.CrystalReports.Engine.Table)arrTables[0]
dbConn = crTable.LogOnInfo
//设置相关的登陆数据库的信息
dbConn.ConnectionInfo.DatabaseName = "pubs"//pubs
dbConn.ConnectionInfo.ServerName = "."
dbConn.ConnectionInfo.UserID = "sa"//sa
dbConn.ConnectionInfo.Password = ""
//将登陆的信息应用于crtable表对象
crTable.ApplyLogOnInfo(dbConn)
//将报表和报表浏览控件绑定
crViewer.ReportSource = oRpt
//传递参数
setReportParameters(DropDownList1.SelectedItem.Text)private void setReportParameters(string para)
{
// all the parameter fields will be added to this collection
ParameterFields paramFields = new ParameterFields()
// the parameter fields to be sent to the report
ParameterField pfType = new ParameterField()
// 设置在报表中,将要接受的参数字段的名称
pfType.ParameterFieldName = "BookType"
ParameterDiscreteValue dcType = new ParameterDiscreteValue()
dcType.Value = para
pfType.CurrentValues.Add(dcType)
paramFields.Add(pfType)
// 将参数集合绑定到报表浏览控件
crViewer.ParameterFieldInfo = paramFields
}检举
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)