本章我们将设计一个人员档案卡片,主要涉及到如下的知识点:
Ð 填报风格
Ð 数据校验
Ð 填报保存
这一章将要介绍填报技术,也有一部分是对前面章节的复习,我会对一些重要的细节给以提示说明,如果你发现有的内容难以理解,请对照插入语,注意到了吗?等提示内容,你会在其中找到答案。
第一步:创建填报表
调整报表成如下图结构:
【属性_报表属性_常规】,选择填报类型为可以填报。
选择B2,右键菜单?填报属性,在呈现的数据填报窗口中,勾选是否可写,同样的操作,设置B3,B4,B5,B6,B7,B8,B9,D4都为可写单元格。
在B5的数据填报窗口中,选择填报数据类型为日期型。
插入语 此处的日期型与数据库employee表中birthday字段的datetime类型相对应。
【配置_数据集】,选择增加,创建dept表的SQL检索数据集。点击增加,创建复杂SQL类型数据集,在呈现的SQL编辑区域输入SQL如下:
SELECT max(empid) as maxid FROM employee
注意到了吗?语句使用了检索人员编号最大值的SQL函数MAX(),这样,每次打开人员档案表时人员编号都是自动计算出的最大值。Cast函数是数据类型转换函数。
选择B4,右键菜单?填报属性,设定编辑风格为下拉数据集,点击设置,数据集选择ds1,显示列为deptname,数据列deptid,点击确定。
选中B2,属性â值â表达式,双击左键,打开表达式编辑,输入如下内容:
if(ds2.maxid==null,1,int(ds2.maxid)+1)
表达式提示 如果查询出来的人员编号最大值是空值(人员表中没有数据),这时设定B2的值为1,否则,B2值等于人员编号最大值加1。由于ds2数据集查询出的记录只有一条,所以只要使用ds2.maxid就可以取到该记录的maxid值。
选择A2,右键菜单?填报属性,切换到更新TAB页,点击增加.
做如下设置:
数据源:appquicker,模式:dbo,更新表:employee
点击列表右侧的增加,新增分录如下:
点击确定。
将表保存为employee.raq
在数据中心控制台,发布人员档案,在报表发布的根目录下,新建一分类夹字典维护,将人员档案发布为它的下级节点。
登录数据中心首页,选择人员档案节点
检查一下,页面上的人员编号是否自动填写最大编号?部门的下拉数据集是否正常?
第二步:增加数据校验
保存数据之前,需要对提交的数据进行校验检查,比如,需要核实人员名称是否填写,出生日期的格式是否正确,电话号码里是否出现非数字的字符等。
下面为人员档案表增加上述数据校验……
选择A2 ,右键菜单? 填报属性? 校验TAB 页,点击增加,表达式中输入:
B3.toString() != “” ,出错提示:请输入人员名称!,非立即校验,点击确定。
选择B7 ,右键菜单? 填报属性? 校验TAB 页,点击增加,表达式中输入:
B7.match(/^\d+$/) ,出错提示:电话号码只能输入数字! ,勾选立即校验。
保存 上述修改。
立即校验与非立即校验的区别?
定义了立即校验的单元格在失去焦点之后调用校验事件,非立即校验是在提交表单数据时调用校验程序。我们设定的表达式是校验的依据。需要注意,立即校验必须放在指定的单元格进行定义,而非立即校验可以放在任何位置定义。例如:名称的校验是非立即校验,可以把它放在A2的填报校验里,电话号码是立即校验,必须在B7单元格上定义校验。如果定义在其它单元格,系统把B7的立即校验按照非立即校验进行处理。
B7.match(/^\d+$/)是什么意思?
电话号码的校验表达式中使用了正则表达式,语句中^\d+$的部分就是正则表达式,它的意义是字符串匹配一个或更多的连续数字(即该字符串只能由数字组成),这是广泛使用在数据校验方面的技术,关于正则表达式的知识请参见专业书籍。
推荐:微软的正则表达式介绍
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/jscript7/html/jsreconintroductiontoregularexpressions.asp
注意到了吗?
当录入不合理的出生日期时,系统会提示请输入有效的日期!,这是由于我们定义B5的数据填报类型为日期型,系统为该单元格自动加入的合法性校验。
现在你可以登录数据中心首页,选择人员档案节点,查看一下刚才加入的校验是不是起到预期的作用。
卡片式上传数据在现实应用中使用的频率较高,你或许见过出纳编写的财务凭证,人力资源拿出的档案表格,库管每天都经手的出入库单据……,这些都是实际应用的卡片式表。
本章介绍了卡片式填报表的制作过程,现在你已经知道如何定义下拉数据集和设置日期类型,如何定义更新字段的对应,怎样设置数据校验。下一章我们开始学习行式填报,上面提到的知识很快会再次用到。



