任务背景 在带参数的报表应用中在查询的应用中同一个用户每次查询所用的参数值或者查询条件往往是相同的或者说常用的总是那几种查询条件如果每次都让用户输入相同的条件值用户会觉得很烦于是用户往往会提出能否提供查询条件保存的功能 面临困难 所谓的查询条件的保存乍一听似乎很简单实际做起来并不容易最直接的是要和用户关联因为某个用户输入的查询条件只能提供给该用户使用不能 让别的用户看见其次要考虑和报表模块查询模块关联因为同一个用户在不同的报表模块查询模块里用的查询条件是不同的 另一个要考虑的是查询条件的存储格式因为不同模块的参数个数参数名均不相同所以查询条件的存储格式要能够灵活扩充灵活解析除了存储格式还需要考 虑存储位置由于和用户关联很多人直接想到的是采用cookies来实现可是由于是WEB应用客户端的机器可能随时会发生变化比如用户可能在办公 室上网也可能在家里上网在家里用另一台机器于是预先存储的查询条件就没了另外由于每一个模块用户都可能存储多个查询条件供选择cookies 用起来还是不方便因此查询条件最好保存到服务器上 接着还需要考虑界面上的制作在原先的参数输入页面上要提供一个历史查询条件的下拉选项该下拉选项从服务器存储的查询条件里读取其次还需要做一个 查询条件是否保存的选项如果保存则提供保存名称的编辑框 做好这些之后服务器端的程序还需要写不少首先根据客户端的输入情况判断使用历史查询条件还是使用当前的输入值如果使用历史查询条件则到库中读 取如果使用当前的输入值还需要处理是否保存查询条件 总之做起来非常麻烦!而所有这些程序还要考虑通用性否则每个模块写一遍那不是累死了!基于以上的考虑建议还是采用快逸报表的 参数模板+参数处理类 来实现简单方便许多具体步骤描述如下 实现步骤 设计一个参数模板该模板里增加三个多余的参数是否保存参数值保存名历史查询 在参数处理类里如果读取到需要保存参数值则将参数值按名字存入一张预先设计的参数值表中该表的结构为用户名报表名保存名参数名与值建表SQL如下 CREATE TABLE param ( userName varchar() not null reportName varchar() not null saveName varchar() not null argName varchar() not null saveValue varchar() ) 用户访问该参数模板的时候可以输入新的参数值并选择是否把新输入的参数值保存下来也可以选择历史保存的参数值进行查询不需要重复的输入 如果用户选择的是历史保存的参数值那么在参数处理类里从数据库中取出历史保存的参数值来进行查询 |