水晶报表连接Oracle做数据报表笔记

首先,新建一个水晶报表的文件,这个时候要给这个报表文件绑定一个oracle数据源,

水晶报表连接Oracle做数据报表笔记

选择右侧菜单的这个东西,选择“数据库专家”,打开之后是这么一个界面:

水晶报表连接Oracle做数据报表笔记

选择建立新连接:

水晶报表连接Oracle做数据报表笔记

这个地方最关键,也是我为什么要写这篇日志的原因。这里很坑,就是这里的服务一定要是Oracle安装程序里的tnsnames.ora文件配置的节点的名称,切记!

例如这个:

ALi=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=192.168.1.1)
(PORT=1521)
)
(CONNECT_DATA=
(SERVICE_NAME=mir)
)
)

这里的服务就要填写ALi。然后再输入相应的用户名和密码就OK了。

第二章:参数

首先,水晶报表里面和RDLC一样有参数字段,然后水晶报表的数据源里面写自定义SQL的时候也是可以定义参数字段的。OK,那么问题来了,我们从.Net程序里传入的参数字段是什么呢?

首先,你在数据源自定义的sql里面新增的参数,会自动在报表参数字段中相应的新增一个参数。然后你也可以自己在参数字段中新增参数。跟数据源绑定的参数最下角是有一个小标识的:

水晶报表连接Oracle做数据报表笔记

最后,上完整的.Net端的代码:

//实例化报表
ReportDocument rpt = new ReportDocument();
rpt.Load(Application.StartupPath + "\\Pan.rpt"); //注册数据源,如果不注册则打开报表的时候会提示登录
TableLogOnInfo log = new TableLogOnInfo();
log.ConnectionInfo.ServerName = "";
log.ConnectionInfo.DatabaseName = "orcl";
log.ConnectionInfo.UserID = "UserId";
log.ConnectionInfo.Password = "XXXX";
rpt.Database.Tables[].ApplyLogOnInfo(log); //为报表控件绑定报表
this.crystalReportViewer1.ReportSource = rpt; //设置参数,这里需要三个变量,对应的报表中每一个参数都可以传入多个值
ParameterFields t = new ParameterFields();
ParameterField paramField = new ParameterField();
ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
ParameterValues paramValues = new ParameterValues();
paramField.ParameterFieldName = "ProductId";
paramDiscreteValue.Value = "PA01010020";
paramValues.Add(paramDiscreteValue);
paramField.CurrentValues = paramValues;
t.Add(paramField);
this.crystalReportViewer1.ParameterFieldInfo = t;
上一篇:MyCat:在.NET Core中使用MyCat


下一篇:RabbitMQ 入门指南——安装