下面练习一个更为复杂的填报表的制作,编制一张销售合同,你要把学习的重点放在下列知识点上:
Ð 自动计算
Ð 数字显示格式的设定
Ð 带有汇总和明细信息的单据制作
希望现在你已经成功编制了上两章介绍的填报表,下面的内容将综合运用前面所学的填报知识。
准备工作:建表
新建销售合同表(contract )
关联提示客户编号可与客户表(customer)进行关联,销售人员编号可与员工表(employee)进行关联,产品编号与产品表(product)进行关联。
建客户表(customer )
关联提示省份地区(province)可与地区表(area)进行关联
建地区表(area )
初始客户表
初始地区表
第一步:创建填报表
新建一张可以填报的行式报表,格式如下:
选择A6 ,属性区域â 扩展方式â 属性值,选择纵向扩展。
注意到了吗?
在上一章人员列表增加和插入行时,系统会提示你选择增加的列表区,你选择的区域必须是一个扩展格才能够增加或者插入行。我们设置A6为纵向扩展单元格,这样我们的销售会计就可以为销售合同增加产品分录了。
拖动鼠标选择C6,D6,E6单元格,属性区域â 显示格式â 属性值,双击属性值格子,在弹出的格式编辑窗口中选择数值Ò#0.00.
【配置]数据集】,增加一个数据集类型为复杂SQL数据集maxcontractid,SQL语句如下:
select max(contractid) as maxid from contract
提示该数据集从合同表(constract)中查询出最大的合同编号。
创建一个SQL 检索数据集product ,SQL 语句如下:
SELECT product.productid,product.productname FROM product
它从product 表中取出产品的编号和名称。
创建一个SQL 检索数据集customer ,SQL 语句如下:
SELECT customer.customerid,customer.customername FROM customer
它从customer 表中取出客户的编号和名称。
创建一个SQL 检索数据集employee ,SQL 语句如下:
SELECT employee.empid,employee.empname FROM employee
它从employee 表中取出员工的编号和名称。
在B2 中输入表达式:
=if( maxcontractid.maxid==null,1, maxcontractid.maxid+1)
插入语你可以通过 属性â 值â 表达式 来设置单元格的表达式,也可以直接在单元格内输入表达式,还可以选中单元格后,在表达式编辑栏内输入表达式,这三种方法具有相同的作用,还记得表达式编辑栏的位置吗?
选择D2,输入表达式:
=str(now(),”yyyy-MM-dd”)
插入语now() 函数取得系统当前日期,使用str()把now()的返回值转化成“yyyy-MM-dd”格式的字符串。
勾选下列单元格的是否可写属性:B2,B3,B4,D2,D3,D4,F4,A6,C6,D6,E6.
设置订单日期D2 和发货日期F4的填报数据类型为日期型,这里我们要利用系统对日期型单元格的自动校验功能。
选择B4,填报属性?常规?编辑风格,设置下拉列表框,设置中增加现金支付和支票,代码值分别为1,2.
选择D4,填报属性?常规?编辑风格,设置下拉列表框,设置中增加铁路运输和公路运输,代码值分别为1,2.
插入语下拉列表的代码值和显示值有什么意义?
报表上的一个单元格,你可以设定它的值和显示值,这是两个相对独立的概念,当数据在进行数据库存储时我们引用的是单元格的值。下拉列表的代码值对应单元格的值,显示值对应单元格的显示值。
选择B3,填报属性?常规?编辑风格,设置下拉数据集,设置数据集customer,显示列customername,数据列customerid。
选择D3,填报属性?常规?编辑风格,设置下拉数据集,设置数据集employee,显示列empname,数据列empid。
选择A6,填报属性?常规?编辑风格,设置下拉数据集,设置数据集product,显示列productname,数据列productid。
选择A6,填报属性?更新,点击增加:数据源appquicker,模式dbo,更新表contract,增加更新分录如下:
完成上述设置后,保存报表为contract.raq,在数据中心控制台发布报表contract,名称为销售合同。
第二步:增加自动计算
返回设计器contract.raq 编辑界面,选择E6 ,右键菜单? 填报属性? 常规,在自动计算中输入C6*D6 。
登录到数据中心首页,检查一下销售合同的金额是否已经具备金额的自动计算功能。
第三步:增加数据校验
针对合同单据,提交数据时我们需要检查是否已经选择产品,数量和单价是否填写的是数字。
选择A6 ,右键菜单? 填报属性? 校验,增加校验,表达式:
A6.toString() !=”" ,出错提示:请选择产品!立即校验:否。
选择C6 ,右键菜单? 填报属性? 校验,增加校验,表达式:
C6.match(/^\d*\.\d{1,2}$|^\d*$/) ,出错提示:数量请输入数字!立即校验:是。
选择D6 ,右键菜单? 填报属性? 校验,增加校验,表达式:
D6.match(/^\d*\.\d{1,2}$|^\d*$/) ,出错提示:单价请输入数字!立即校验:是。
插入语正则表达式的作用是:在C6,D6单元格内只能输入整数或精度是两位的小数。
登录数据中心首页,浏览一下我们完成的销售合同吧,如果感兴趣,可以根据实际需求在单据上增加一些合同信息,现在你知道该怎么做了吧!
到本章结束,我们系统的介绍了Appquicker 的数据填报技术,如果你已经了解了业务需求,现在你可以开始编制各类业务填报单据了。







