热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

锐浪报表系统支持高效条件查询功能

在即将完成的人事项目中,报表管理问题依然未能得到有效解决。尽管前端采用了MVC开发模式,但与锐浪报表系统的集成存在兼容性问题。虽然简单查询所有数据相对容易实现,但用户希望能够在报表中进行更复杂的条件查询和直接操作。为满足这一需求,我们正积极探索优化方案,以提升系统的查询效率和用户体验。

        人事项目快要结束了,但是报表问题还是得不到解决。我们前台采用MVC开发模式,但是MVC和锐浪不能很好的结合。如果是一下查询所有的数据还是比较简单的,但是用户需求是能对报表直接操作,按条件查询。无奈,找到一个解决办法,那就是将报表单独发布一个系统,当人事系统调用报表时则跳转到报表系统的独立连接。下面来说说如何给锐浪报表单独发布。

       报表插件运行在客户端电脑上,可以用报表插件的编程接口将网页客户端上的数据加载到报表中,如将网页上的UI界面上的数据传入到报表中进行打印等。

       在设计报表模板时,通常会设置数据源连接串与查询SQL语句,如果在报表插件中没有为报表关联服务器URL数据,报表模板中的数据源设置将会被应用,报表插件将尝试从对应数据源中获取报表数据。此种方式会存在严重的弊端,因为连接串中的数据库用户与密码信息是固定的,客户端必须具有直接访问数据库的权限,这样会有很大的安全局限性,特别是对于Internet网(广域网)来说,客户端肯定不能直接访问数据库。WEB报表应该关联报表数据DataURL,从 DataURL 处获取 XML 数据, 这样客户端肯定能访问WEB服务器,这样肯定不存在访问权限限制。除此之外,这种方式获取报表数据需要Windows 客户端提供对应数据库的 OLE DB 驱动程序,如 Oracle、MySQL 等很多数据库在 Windows 下并没有直接安装有其 OLEDB 驱动程序,这样就需要为每个客户端安装 OLE DB 驱动程序,这样也会极大增加软件部署的难度。所以强烈建议不采用这种方式为WEB报表提供数据。

一、在网页中插入报表插件

        在网页中通过插入 object标签将各种浏览器插件嵌入到网页中,Grid++Report报表插件也是通过这样的方式将其嵌入到网页中。Grid++Report为此定义了专门的Javascript 函数来简化此任务,相关函数定义在例子程序的 CreateControl.js代码文件中,每个函数的参数说明在代码中都有详细注释说明。下面是CreateControl.js 代码:

 

//1、变量 gr_InstallPath 等号后面的参数是插件安装文件的所在的网站目录,一般从网站的根目
// 录开始寻址,插件安装文件一定要存在于指定目录下。
//2、gr_Version 等号后面的参数是插件安装包的版本号,如果有新版本插件安装包,应上传新版
// 本插件安装文件到网站对应目录,并更新这里的版本号。
//3、更多详细信息请参考帮助中“报表插件(WEB报表)->在服务器部署插件安装包”部分
var gr_InstallPath = "grinstall"; //实际项目中应该写从根目录寻址的目录,如gr_InstallPath="/myapp/report/grinstall";
var gr_Version = "6,0,15,0819";

//以下注册号为本机开发测试注册号,报表访问地址为localhost时可以去掉试用标志
//购买注册后,请用您的注册用户名与注册号替换下面变量中值
var gr_UserName = '锐浪报表插件本机开发测试注册';
var gr_SerialNo = '8PJH495VA61FLI5TG0L4KB2337F1G7AKLD6LNNA9F9T28IKRU6N33P8Z6XX4BUYB5E9NZ6INMD5T8EN47IX63VV7F9BJHB5ZJQQ6MX3J3V12C4XDHU97SXX6X3VA57KCB6';

//报表插件目前只能在32位浏览器中使用
var _gr_platform = window.navigator.platform;
if (_gr_platform.indexOf("64") > 0)
alert("锐浪Grid++Report报表插件不能运行在64位浏览器中,相关报表与打印功能将无法正常运新,请改用32位浏览器!");

//区分浏览器(IE or not)
var _gr_agent = navigator.userAgent.toLowerCase();
var _gr_isIE = (_gr_agent.indexOf("msie")>0)? true : false;

var gr_CodeBase;
if( _gr_isIE )
gr_CodeBase = 'codebase="' + gr_InstallPath + '/grbsctl6.cab#Version=' + gr_Version + '"';
else
gr_CodeBase = '';

//创建报表对象,报表对象是不可见的对象,详细请查看帮助中的 IGridppReport
//Name - 指定插件对象的ID,可以用js代码 document.getElementById("%Name%") 获取报表对象
//EventParams - 指定报表对象的需要响应的事件,如:" "形式,可以指定多个事件
function CreateReport(PluginID, EventParams)
{
var typeid;
if( _gr_isIE )
typeid = 'classid="clsid:396841CC-FC0F-4989-8182-EBA06AA8CA2F" ';
else
typeid = 'type="application/x-grplugin6-report" ';
typeid += gr_CodeBase;
document.write('');

document.write('');
}

//用更多的参数创建报表打印显示插件,详细请查看帮助中的 IGRPrintViewer
//PluginID - 插件的ID,可以通过 var ReportViewer = document.getElementById("%PluginID%"); 这样的方式获取插件引用变量
//Width - 插件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - 插件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//ReportURL - 获取报表模板的URL
//DataURL - 获取报表数据的URL
//AutoRun - 指定插件在创建之后是否自动生成并展现报表,值为false或true
//ExParams - 指定更多的插件属性阐述,形如: ""这样的参数串
function CreatePrintViewerEx2(PluginID, Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
var typeid;
if( _gr_isIE )
typeid = 'classid="clsid:ABB64AAC-D7E8-4733-B052-1B141C92F3CE" ' + gr_CodeBase;
else
typeid = 'type="application/x-grplugin6-printviewer"';
document.write('');
}

//用更多的参数创建报表打印显示插件,详细请查看帮助中的 IGRDisplayViewer
//PluginID - 插件的ID,可以通过 var ReportViewer = document.getElementById("%PluginID%"); 这样的方式获取插件引用变量
//Width - 插件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - 插件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//ReportURL - 获取报表模板的URL
//DataURL - 获取报表数据的URL
//AutoRun - 指定插件在创建之后是否自动生成并展现报表,值为false或true
//ExParams - 指定更多的插件属性阐述,形如: ""这样的参数串
function CreateDisplayViewerEx2(PluginID, Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
var typeid;
if( _gr_isIE )
typeid = 'classid="clsid:600CD6D9-EBE1-42cb-B8DF-DFB81977122E" ' + gr_CodeBase;
else
typeid = 'type="application/x-grplugin6-displayviewer"';
document.write('');
}

//以 ReportDesigner 为 ID 创建报表设计器插件(Designer),详细请查看帮助中的 IGRDesigner
//Width - 插件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - 插件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//LoadReportURL - 读取报表模板的URL,运行时从此URL读入报表模板数据并加载到设计器插件
//SaveReportURL - 保存报表模板的URL,保存设计后的结果数据,由此URL的服务在WEB服务端将报表模板持久保存
//DataURL - 获取报表运行时数据的URL,在设计器中进入打印视图与查询视图时从此URL获取报表数据
//ExParams - 指定更多的插件属性阐述,形如: ""这样的参数串
function CreateDesignerEx(Width, Height, LoadReportURL, SaveReportURL, DataURL, ExParams)
{
var typeid;
if( _gr_isIE )
typeid = 'classid="clsid:CE666189-5D7C-42ee-AAA4-E5CB375ED3C7" ' + gr_CodeBase;
else
typeid = 'type="application/x-grplugin6-designer"';


document.write('');
}

//以 ReportViewer 为 ID 创建报表打印显示器插件(PrintViewer),参数说明参考 CreatePrintViewerEx2
function CreatePrintViewerEx(Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
CreatePrintViewerEx2("ReportViewer", Width, Height, ReportURL, DataURL, AutoRun, ExParams)
}

//以 ReportViewer 为 ID 创建报表查询显示器插件(DisplayViewer),参数说明参考 CreateDisplayViewerEx2
function CreateDisplayViewerEx(Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
CreateDisplayViewerEx2("ReportViewer", Width, Height, ReportURL, DataURL, AutoRun, ExParams)
}

//以 ReportViewer 为 ID 创建报表打印显示器插件(PrintViewer),插件大小为100%充满位置区域,插件创建后会自动运行,参数说明参考 CreatePrintViewerEx2
function CreatePrintViewer(ReportURL, DataURL)
{
CreatePrintViewerEx("100%", "100%", ReportURL, DataURL, true, "");
}

//以 ReportViewer 为 ID 创建报表查询显示器插件(DisplayViewer),插件大小为100%充满位置区域,插件创建后会自动运行,参数说明参考 CreateDisplayViewerEx2
function CreateDisplayViewer(ReportURL, DataURL)
{
CreateDisplayViewerEx("100%", "100%", ReportURL, DataURL, true, "");
}

//以 ReportDesigner 为 ID 创建报表设计器插件(Designer),插件大小为100%充满位置区域,参数说明参考 CreateDesignerEx
function CreateDesigner(LoadReportURL, SaveReportURL, DataURL)
{
CreateDesignerEx("100%", "100%", LoadReportURL, SaveReportURL, DataURL, "");
}

    CreateDisplayViewerEx2方法是向网页中插入报表查询显示插件(DisplayViewer),CreateDisplayViewerEx 与 CreateDisplayViewer 是CreateDisplayViewerEx2 的简化版本,目的是为了减少调用参数。开发者应该统一采用 CreateControl.js中的函数来向网页中插入报表插件。

 

二、在网页中插入报表对象

     Grid++Report报表对象是一个不可显示的控件,报表对象在网页中没有直接的显示输出,但调用其方法可以实现很多与报表生成与输出相关的任务。如实现无界面的打印报表,导出报表数据等。报表对象不要求插入在网页BODY 节中,我们一般将其插入在 HEAD 节中。如下代码所示:

 
 

三、在网页中插入报表设计器插件

    Grid++Report报表设计器插件是一个可视化控件,报表设计器插件在网页中可视化地设计报表模板,为用户提供可视化的自定义报表设计功能。下面是在网页中插入设计器插件:

 
 


CreateDesignerEx可以通过最后一个参数可以在创建插件时指定插件的属性值

 
 

四、插件安装包文件部署至服务器

        在部署用 Grid++Report开发的WEB报表时,需要将插件安装包文件一同分发在WEB服务器上,将两个文件(grbsctl6.cab 与grbsctl6.exe)复制到WEB服务器的可下载目录。

        另还要根据实际情况,调整 CreateControl.js文件中的插件部署目录变量值,这样才能保证客户端能找到插件安装包的下载位置。打开 CreateControl.js,将开始处的 gr_InstallPath变量值修改为插件安装包文件所在的网站目录(特别注意:不是文件的磁盘目录),一般采用相对目录或从网站根目录进行寻址的目录。

         举例说明:如将插件安装包复制到网站根目录的 grinstall 子目录下,则CreateControl.js 中 gr_InstallPath 变量应该修改为(vargr_InstallPath = "/grinstall";)。假设服务器 IP 为192.168.1.10,则在浏览器中输入“http://192.168.1.10/grinstall/grbsctl6.cab”,如果能正常下载文件就说明插件安装包已经在服务器成功部署。

 

五、创建报表门户(入口)网页

    报表门户(入口)网页是指在打开各个具体报表网页前的目录(索引/导航)网页,在此网页中实现插件是否已经安装的判断,并实现插件的下载安装。插件在此安装成功后,再打开其它的报表展现网页就可以让报表成功显示出来。

报表门户(入口)网页既可以是一个专门的网页,也可以是其它目录(索引/导航)网页中加入插件安装的代码。


六、浏览器下载安装报表插件说明

    如果已经将插件安装包部署到服务器,且已经创建报表门户网页,则未安装插件的客户端电脑在访问报表门户网页时将会出现插件安装的相关提示界面。以下内容就是对插件自动下载安装的说明,也是对插件部署是否正确的检验。锐浪报表插件支持多浏览器,在不同的浏览器下安装行为有所区别。

计算机生成了可选文字: 收藏夹行锐浪报表插件web报表臼lS报表)演示一全面支页面!此网站需要安装以下该加载项并打算安装加该载项:'加载项贝。n's。ftwareTe。地01。盯c。,Ltd,,中的“锐浪软件份i肚+Rep。rts报表插件”。如果您信任该网站年此网站需要安装锐很报表插件才能保证其正常运行如浏览器的顶部或底部出现提示条,左键点击提示条并运行加载项,按此方式安装最简便锐浪报表插件安装后,点击鲤止重新加载此网站Grid++Rep。rtweb报表功能演示初次访问会自动下载安装报表插件,需要等待几分钟。始终不能看到演示报表,请看关于正安主设置。报表插件相关资料与例子在产品安装中,工戴量新版鱼上鱼即塑:报毫擎鲍臀成多语言支持的’报表插件例子包在启动时习、asp'phP、Jsp置自动选择匹配的。访问益浪刻生直互了解更多关千Ori界面语言,也可以专门指定界面语言,

    至此为止,锐浪报表系统就做好了,接下来将其发布到IIS即可使用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


推荐阅读
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • 通过命令行工具 `virt-install` 配置和安装虚拟机环境。`virt-install` 是一个基于 `libvirt` 虚拟化管理库的命令行工具,用于创建新的虚拟机实例。该工具支持通过串行控制台和 SDL 图形界面进行虚拟机的安装和管理,适用于多种操作系统和虚拟化平台。 ... [详细]
  • 如何在DataGridView中实现带有图标的单元格显示
    本文详细探讨了在C# WinForms应用程序中,如何通过DataGridView控件实现带有图标的单元格显示。文章不仅提供了具体的实现方法,还深入解析了相关技术细节,对于希望提升用户界面交互体验的开发者而言,具有很高的参考价值。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
  • NanoPi2 使用体验深入解析(续篇)
    随着Raspberry Pi的问世,开源硬件领域迎来了前所未有的发展,激发了全球范围内的创新热潮。在中国,这一趋势同样催生了一系列类似的开发板,例如NanoPi 2。本文作为前篇的延续,将深入探讨NanoPi 2的实际使用体验,从性能、兼容性到应用场景,进行全面分析。 ... [详细]
  • EasyUI作为一种高效的前端框架,显著简化了JavaScript代码的编写,提升了开发效率。在构建窗口应用程序时,首先需要引入EasyUI所需的JS文件和CSS样式表。由于EasyUI依赖于jQuery,因此还需确保正确加载jQuery库。通过这种方式,开发者能够快速实现界面组件的动态交互与美观布局,为用户提供更加流畅的使用体验。 ... [详细]
  • 综合实训 201521440015
    Chinesepeople’publicsecurityuniversity网络对抗技术实验报告实验五综合渗透学生姓名常泽远年级15区队4指导教师高见信息技术与网络安全学院2018 ... [详细]
  • 一键将应用部署至远程服务器,体验超乎想象的便捷与高效
    该插件作为IDEA的内置功能,用户可以直接启用,无需额外安装。通过简单的配置,即可实现应用的一键部署至远程服务器,极大地提升了开发效率和便捷性。插件支持镜像管理和容器管理,允许用户与容器进行交互,并且兼容Docker Compose,适用于复杂的多容器应用部署。总结部分详细介绍了插件的使用方法和优势,附带的参考资料和项目源码地址为用户提供更多学习和实践资源。 ... [详细]
  • IT企业通常配置多少Java开发者及Java岗位的发展前景分析
    在IT企业中,Java开发者的配置数量通常较多,反映了该语言在后端开发中的重要地位。与前端开发相比,Java的学习曲线可能更为平缓,但深度掌握仍需大量实践。Web前端开发则侧重于用户体验和浏览器兼容性,要求开发者具备扎实的技术基础和良好的审美观。从北上广深等一线城市的薪资水平来看,Java开发者普遍享有较高的薪酬待遇,且随着经验的积累,职业发展空间广阔。 ... [详细]
  • 在使用 PHP 通过 SSL 安全连接到 MySQLi 数据库服务器时,遇到了一些技术难题。我的环境包括一个 Web 服务器和一个数据库服务器,两者均使用 OpenSSL 生成了证书。尽管证书内容一致,但在尝试从 Web 服务器使用 `mysql` 命令进行连接时,仍然遇到了问题。为了确保连接的安全性和稳定性,需要进一步检查证书配置和 PHP 的 SSL 设置,以排除潜在的配置错误或兼容性问题。 ... [详细]
  • 【高效构建全面的iOS直播应用】(美颜功能深度解析)
    本文深入探讨了如何高效构建全面的iOS直播应用,特别聚焦于美颜功能的技术实现。通过详细解析美颜算法和优化策略,帮助开发者快速掌握关键技术和实现方法,提升用户体验。适合对直播应用开发感兴趣的开发者阅读。 ... [详细]
  • 通过Apache Commons FileUpload组件,可以根据具体应用需求实现多样化的文件上传功能。在基本应用场景中,开发者可以通过调用单一方法来解析Servlet请求,从而轻松处理文件上传任务。此外,该组件还提供了丰富的配置选项和高级功能,支持大文件上传、多文件并发处理等复杂场景,显著提升了文件上传的效率和可靠性。 ... [详细]
  • 如何使用Python高效绘制并解读混淆矩阵 ... [详细]
  • 在Adobe After Effects中,通过高效添加地图指北针,可以显著提升地理信息的准确性和视觉效果。本文介绍了一种方法,利用代码函数 `public static void ExportMapEx(string filepath, int resolution, AxMapControl curMapControl)`,实现地图导出时自动添加指北针,确保地理数据的精确性和一致性。此外,还详细探讨了如何优化指北针的位置和样式,以增强地图的可读性和专业性。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
author-avatar
dbvg2q
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有