• 此方案由番薯贡献。
      若完全参照文档中场景与步骤操作,出现问题可咨询帆软技术支持团队,提供服务范围内的指导。(注:文档场景可能无法兼容所有客户场景)
      其他情况,可到帆软社区提问(问题响应快,解决率超80%), 立即提问
      详情: 《关于帆软社区提问的相关说明》
    社区级协助
  • 文档创建者: lu123
  • 历史版本: 21
  • 最近更新: Carly 于 2023-02-23
  • 1. 概述

    1.1 版本

    报表服务器版本
    11.0

    1.2 应用场景

    用户存在多个数据库,一部分是测试库,一部分是正式库。数据库中每张表的表结构是完全一样的,只有存放的数据不同。希望可以动态切换数据库使其展示的结果不同。

    Oracle数据库中,模式名和表名不一样,但表结构完全相同,数据不同。希望可以动态切换模式名和表名,使其展示的结果不同。

    1.3 功能简介

    在数据连接和模板做好的基础上,可以将数据连接中的配置修改为参数。在预览模板时,使用url拼接参数访问不同数据库数据。

    注:请务必先正常创建数据连接、制作模板。在模板制作完成后,再将数据连接中的配置切换为参数。

    因为在切换参数后,无法在设计器中正常预览数据集数据。

    2. 动态切换数据库

    在数据连接和模板做好的基础上,以 Oracle 数据集为例,原来直接在 URL 后直接写数据库的名字,现在直接在里面写个参数,如下图所示:

    注:用户名和密码也可以使用参数。

    ${database} 参数赋值即可实现动态数据源的效果,一般直接在 URL 后面赋值,也可创建报表参数赋值。

    例如访问数据库 frhelp: http://localhost:8075/webroot/decision/view/report?viewlet=1.cpt&database=frhelp

    43.png

    3. 动态切换模式名和表名

    同样在数据连接和模板做好的基础上,改变数据集定义把模式名和表名都变成参数,如下图所示:

    给这两个参数赋值即可。

    注:如果使用的不是 Oracle 数据库,那么只需定义一个表名参数,如 select * from ${tablename},即可实现动态切换表的效果。

    44.png

    4. 动态切换IP地址、数据库名字

    以 SQL Server 为例:动态 IP 和数据库名,可以让用户名和密码也通过参数来传递。

    原报表地址为: http://localhost:8075/webroot/decision/view/report?viewlet =test_1.cpt

    现动态访问地址: http://localhost:8075/webroot/decision/view/report?viewlet= test_1.cpt&ip=localhost&dbname=test&user=sa&password=123456

    传值说明:

    • 给参数 IP 传值:「localhost」

    • 给参数 dbname 传值:「test」

    • 给参数 user 传值:「sa」

    • 给参数 password 传值:「123456」

    其他数据库的设置类似,这里就不一一赘述了

    注:如集成在某个系统的话,参数传递和报表处理参数是一样的。

    45.png