水晶报表连接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里面新增的参数,会自动在报表参数字段中相应的新增一个参数。然后你也可以自己在参数字段中新增参数。跟数据源绑定的参数最下角是有一个小标识的:

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

//实例化报表
            ReportDocument rpt = new ReportDocument();
            rpt.Load(Application.StartupPath + "\Pan.rpt");

            //注册数据源,如果不注册则打开报表的时候会提示登录
            TableLogOnInfo log = new TableLogOnInfo();
            log.ConnectionInfo.ServerName = "4160";
            log.ConnectionInfo.DatabaseName = "orcl";
            log.ConnectionInfo.UserID = "UserId";
            log.ConnectionInfo.Password = "XXXX";
            rpt.Database.Tables[0].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;
原文地址:https://www.cnblogs.com/wpcnblog/p/5757060.html