zoukankan      html  css  js  c++  java
  • 水晶报表连接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;
  • 相关阅读:
    jeecg中树形显示的用法
    jeecg中ajax传值的前端js和后台代码
    js中去掉字符串中的某个指定字符
    Address already in use: JVM_Bind(端口冲突)
    jeecg中List页面标签的用法
    HTML map标签图片区域链接
    CSS块级元素和行内元素
    discuz 标签
    JavaScript中getYear()各个浏览器的差异
    [HNOI2017] 礼物
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/5757060.html
Copyright © 2011-2022 走看看