西软FOXHIS报表专家使用说明Word文件下载.docx
《西软FOXHIS报表专家使用说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《西软FOXHIS报表专家使用说明Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
![西软FOXHIS报表专家使用说明Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/25/47a107eb-0062-46ab-bd58-5fe75dd25038/47a107eb-0062-46ab-bd58-5fe75dd250381.gif)
2.定位标识。
在报表专家中,下列符号为特定语法专用,在定义各种名称时请慎用:
‘;
’,‘:
’,‘!
’,‘(’,‘)’,‘[’,‘]’,‘空格’,‘Tab’等。
3.DataWindow属性
二、报表各项定义说明
1、报表显示格式的定义
共有如下四种格式可供选择:
⑴.“_com_”:
显示格式为数据窗口浏览界面。
⑵.“_com_p_”:
显示报表打印格式。
⑶.“_com_P_”:
直接将报表送至打印机并以打印格式打印。
4.空:
则报表以数据窗口浏览格式显示且无格式调整键。
5._sim_简单的选择窗口
6._com_d_
2、标题的定义
此处的标题仅供报表窗口的Caption使用。
而报表打印界面中的标题则需在后面的文本项定义中进行特别定义。
标题结束符为分号。
例子:
_com_房间帐主单及客人一览表;
3、SQL语句的定义
本部分将定义报表的主体,SQL语句的格式为:
(select……from……where……);
字段名表名检索条件
注意:
1、嵌套的SQL语句关键字的大小写格式应与主SQL语句关键字不同以示区别。
2、若该报表定义涉及到多个表,则应在from后对其进行代号别名定义,如guesta,masterb等。
3、子查询的关键字要区分:
Select..From..Where...大小写,计算项的逗号后面要有两个空格,包括函数substring(a,1,2)
列计算项遵守命名规则:
与类型相关,还需要=两边的空格
char021,char09正对上面的char02后面的前2位数字表示长
度,故对超过长度是100系统不显示,要自己进行判断
numb10
mone09
date01
eg.char10=substring(c.descript,1,10),mone10_1=sum(a.arrf_w+a.arrg_w+a.arrc_w),
4、proc写法,结果集的反应
execp_aaaa'
'
'
resultset=char09,mone10
其proc.后面也可以带相应的参数,支持宏定义
5、增加项目
char01_1=='
:
-;
selectbmpcode,descriptfromrmsta_legendorderbycode);
char03==bitmap(nodispbmpcode):
图标;
descript:
解释;
就是select中没有有,但要加个字段,有其他特殊用途的列
4、中文表头的定义
其一般格式为:
列名:
中文名=长度=格式=排列
xxxx:
XXXXX=10=0.00=alignment=“2”
注意日期的格式写法
XXXXX=14=yyyy/mm/ddhh|mm=alignment=“2”
日期中的格式不能用冒号,用| 号
字段名中文表头列宽数值格式
其中alignment参数设置本列数据的排列格式,其值有三种选择:
0——居左;
1——居右;
2——居中
各列表头之间用分号隔开,最后一个表头不带分号。
5、表头格式及其它定义
基本格式:
headerds=[参数1=值1参数2=值2……]
主要参数:
headerds=[header=4player=3footer=1summary=2styles=boxdetail.height.autosize="
yes"
autoappe=0]
header=4表示header为4行
player=3表示打印模式和预览模式下的去掉header多少行
summary=2表示summary有2行空间
footer=3表示footer有3行空间
styles=box表示数据栏是以方框的格式体现。
shaodowbox阴影框。
3draised凸出框。
3dlowered凹框。
resize自由框。
autoappe=0表示select字段后对应的中文字段,若没有写这选项,则列名以用原来的英文字段代替,若加上前面的参数表示自动隐藏其没有对应字段列,同时下面对应的字段写的位置要做相应的调整。
detail.height.autosize="
表示针对某些列值的长度超过本身的
段长度时。
会进行自动换行处理,同时宽度增加。
6、预处理--proc写法
execsp=p_aaa'
'
7、计算项定义(事后计算项)
computes=项名:
计算公式:
行位置:
列位置:
alignment=“”border=“”!
其中列位置格式为:
字段1:
字段2(重复时表示其宽度占一列宽)
alignment可选值:
0-Left,1-Right,2-Center
Border可选值:
0-None,1-Shadow,2-Box,3-Resize,4–
Underline,5-3DLowered,6-3DRaised
例:
computes=c_fshu:
count( a.roomnoforalldistinct ):
footer:
1:
b.name:
alignment=“2”border=“2”!
注意.一般括号里的要求前后有空格
同时位置也可以是3.5等这些小数值,其表示可以是中间放置的
8、文本项定义
格式:
texttext=项名:
文本内容:
行位置:
:
列位置:
其中各参数的定义与计算项定义一致。
例:
texttext=c_date:
打印时间-#pdate#:
header:
3:
a.roomno:
c.descript:
alignment="
0"
border="
!
在自定义报表时,只需按顺序对上述七项内容进行定义即可完成一个完整的报表。
另有下面几点内容需要说明:
一、宏的定义
在自定义报表中可能涉及到两种类型的宏:
系统宏与用户宏
1、系统宏为系统事先定义的一些常用宏,在报表中可直接引用。
其格式为:
#宏名#,如#hotel#,#bdate#等,最常见的系统宏及其含义如下:
◆#hotel# --酒店的名称
◆#pdate# --打印日期格式 ‘yyyy年mm月dd日hh时mm分'
◆#pc_id# --工作站地址
◆#modu_id# --模块号
◆#bdate0# --当前营业日期(中)格式:
“yyyy年mm月dd"
◆#Bdate0# --当前营业日期(英)格式:
"
yyyy/mm/dd“
◆#bdate1#--上营业日期(中)格式:
◆#Bdate1#--上营业日期(英)格式:
“yyyy/mm/dd"
◆#shift#--当前班次
◆#empno#--当前员工工号
◆#empname#--当前员工姓名
2、用户宏可在报表中自行定义,其格式为:
#宏名!
中文提示#
其中宏名的格式为:
数据类型+数据格式+标识(后两项可缺省)
如:
#datebeg!
请输入统计开始日期#,#numb!
请输入入住次数#。
例子:
宏的定义分几种类型date,char,mone,numb
selectcode,descriptfromdeptdefwheretype='
#char01!
请输入类别码#'
orderbycode;
selectdescript,day99fromyjierepwheredate='
#date01!
请输入营业日期!
#Bdate0##'
orderbyclass;
注:
导出的数据窗口的语法也可用用上述方法去实现宏这过程!
其替换时要求去掉arguments=((... )),对应的值可按上面的写法取得
参数定义且只要定义一次,后面直接引用,后面直接引用的格式就是#char01#,#date01#....;
二、SQL语句中的计算项定义
除直接引用表中已有的字段外,自定义报表还可能需要对表中的字段进行一系列的计算后生成计算项字段后引用。
项名=计算公式
其中项名的格式与宏名的格式相似:
数据类型+数据格式+标识
numb04=e.i_times+1
numb104=(selectisnull(sum(b.ot),0)Fromhmaster_incomeb
Wherea.cusid=b.tranlogandb.dep>
='
#datebeg#'
and
b.dep<
#dateend#'
)
三、技巧和特殊写法
------------------------------------------------------------------
●关于分组
1.位置--一般放在
headerds=[header=4player=3footer=1summary=2styles=boxdetail.height.autosize="
autoappe=0]
的下方
2.语法
group_by=1:
0:
("
j.name2"
)---〉分组编号:
组别头的高度:
组别尾高
度:
('
分组标志列'
group_by=2:
j.name1"
)
computes=s_cnt:
count(a.accntforgroup2):
trailer.2:
a.name:
alignment="
2"
format="
border="
computes=c1_numb10_01:
sum(mone100forgroup2):
mone100:
mone100:
alignment="
1"
border="
0.00"
computes=s_cnt1:
count(a.accntforgroup1):
trailer.1:
computes=c1_numb10_02:
sum(mone100forgroup1):
过程要求先对group2,然后对group1做
3.band的写法
header.1header.2
trailer.1trailer.2
●关于复合报表头
原理:
1.空框覆盖--带边框
2.位置微调4.5/13/2---不带边框
texttext=t_1:
header:
1/2:
c.des:
texttext=t_2:
aaaaa:
1.5/1:
●关于:
冒号的用途如日期格式.
由于:
在其中是作为辨别标记的,所有本来需要用:
的地方,用|替换
------------------------------------------------------------------------
列值替换的写法
如:
班次1,2,3,4在列中,想用中文显示
selecta.shift,b.empno…..from…..
对应列的写法:
char04==if(a_shift1='
1'
早班'
if(a_shift1=’2’,’中班’,'
/人'
)):
特殊;
eg:
computes=exp:
if(nodispa_shift5='
早'
if(nodispa_shift5='
2'
中'
3'
晚'
夜'
))):
detail:
char03:
注意:
在计算列中带if条件的话,要加nodisp
●关于crosstab
sql=[execp_gds_auto_cross]
play=[row:
char081=12col:
char082=10val:
numb081]
title=[营业日报综合分析报告]
mm=format=[0.00]//数据项的格式定义
headerds=[header=6player=5styles=boxsummary=5footer=3]
//针对HEADER的定义
genput=[
computes=p_yshu:
页次'
+string(page(),'
0'
)+'
/'
+string(pagecount(),'
):
header:
5:
c?
computes=c_0:
aaaaaaaaaaaa'
4:
c1:
c3:
texttext=t_d1:
aaaaaaa#empno#aaaaaaaaaa:
texttext=t_s1:
summary--------------1:
summary:
texttext=t_s2:
summary--------------2:
2:
texttext=t_s3:
summary--------------3:
3:
texttext=t_f1:
footer--------------1gds:
texttext=t_f2:
footer--------------2#hotel#:
texttext=t_f3:
footer--------------3#pdate#:
]
●可以直接倒入.srd
若要带入参数,可以用上面的宏定义引用,参照上面参数引用说明!
●也可以直接放入数据窗口的名称程序调用时的用法!
注意参数的类型写法:
dataobject:
d_gl_accnt_daycred;
c:
;
HRY;
DT:
2003.01.01)
--------------------------------------------------------------------
●图形风格列表的写法
参考例子
win_title=[标题],
/*
窗口标题
*/
sql=[sql语句,可以使用宏替换等],
注明:
sql语句之间的字段必须是空格+’,’+空格分开
同时不能有mone类型
要求的类型为char,deci,date,numb型,其他不支持
同时宏替换时对字符类型要求用双引号分开
/*数据源*/
set=[graphtype="
9"
color="
128"
backcolor="
79741120"
category="
char10"
values="
yjourrep_day,avg(yjourrep_day)"
depth="
20"
series="
出租率'
@overlay~t平均收入'
],
对应的字段必须是表名+’_’+’字段名’
若是numb等类型.则直接写相关的内容如:
numb101,char10等
graphtype="
表示图形类型,可以自己试,就知道对应类型是哪个!
设置结果集,图形的类型图形颜色背景颜色图角横坐标标题
显示值平均值显示间隔
图列颜色的说明.
gtitle=[title="
本月餐饮收入走势"
autosize="
font.italic="
font.height="
-20"
],
/*
图形标题写法,字体是否斜体的写法
legend=[legend="
4"
color="
backcolor="
536870912"
textcolor="
height="
-16"
displayexpression="
category+'
-'
+sumforcategory"
联想内容,取图形的最好状态legend=4表示选择第4类图形
catagory=[label="
日期"
droplines="
secondaryline="
displayeverynlabels="
dsp.autosize="
dsp.font.height="
-11"
dsp.font.escapement="
450"
lb.autosize="
lb.font.height="
lb.font.escapement="
sort="
],
为显示横坐标内容间隔多少显示
横坐标的写法
value=[label="
金额"
dsp.fontcolor="
-12"
900"
lb.textcolor="
纵坐标的写法
西软开发一部
黄向伟重新整理
2003-07-15