发信人: thworkin(小乐子)
整理人: hunter__fox(2003-05-18 20:24:33), 站内信件
|
**大家使用前要先建一个报表,设好表头之类的布局,并在数据环境中加入表(当**然也可以仿照下述把记录加进去),没法子,自己摸出来的东西就是有点不完善
**希望各位能提意见
LOCAL c_data,c_title,n_msto,n_msle,n_mshe,n_mswi,n_dyhe,n_dyfs,n_msjg,n_msbl,l_zdzl
*C_DATA:数据来源
*C_TITLE:标题
*N_MSTO:明细区的TOP
*N_MSLE:明细区的LEFT
*N_MSHE:明细区的HEIGHT
*N_DYHE:单元格内容高度
*N_DYFS:单元格字体大小
*N_MSJG:明细区的资料间的间隔
*N_MSBL:明细区的资料内容长度与数据定义长度的比例
*L_ZDZL:明细区域自动置中
*注:A4纸页宽为 82500
*N_MSWI:明细区的WIDTH
c_data = "XXXXX"
c_title = "统计表"
n_msto = 12500
n_msle = 2500
n_mshe = 2000
n_dyhe = 1500
n_dyfs = 9
n_mswi = 0
n_msjg = 500
n_msbl = 950
l_zdzz = .T.
SELEC 1
USE c_data + ".DBF"
n_fcou = FCOUNT()
SELECT 2
USE hhh.frx
DELETE ALL FOR SUBSTR(uniqueid,1,5) = "_WORK"
PACK
n_bgpb = n_msle &&用于储存报表字段长度累计
FOR i = 1 TO n_fcou
c_i = ALLTRIM(STR(i))
c_uniq = SUBSTR("TTTTT",1,5 - LEN(c_i)) + c_i
c_line = SUBSTR("LLLLL",1,5 - LEN(c_i)) + c_i
c_zdmi = SUBSTR("MMMM",1,5 - LEN(c_i)) + c_i
* C_UNIQ = IIF(I<=9,"TTT0" + C_I,IIF(I<=99,"TTT" + C_I,"TT" + C_I))
* C_LINE = IIF(I<=9,"LLL0" + C_I,IIF(I<=99,"LLL" + C_I,"LL" + C_I))
SELECT 1
c_finame = FIELD(i)
n_lenfild = 0
GO TOP
DO WHILE !EOF()
c_fival = &c_finame
DO CASE
CASE TYPE("c_fival") = "C"
c_fidtochr = ALLTRIM(c_fival)
CASE TYPE("c_fival") = "N"
c_fidtochr = ALLTRIM(STR(c_fival))
CASE TYPE("c_fival") = "D"
c_fidtochr = DTOC(c_fival)
OTHERWISE
ENDCASE
n_lenfild = IIF(LEN(c_fidtochr) > n_lenfild,LEN(c_fidtochr),n_lenfild)
SKIP
ENDDO
n_filen = n_lenfild * n_msbl
SELECT 2
APPEN BLANK
REPLACE platform WITH "WINDOWS",objtype WITH 5,objcode WITH 0,;
EXPR WITH " " + c_finame + " ",vpos WITH n_msto - 3500,hpos WITH n_bgpb + n_msjg,;
HEIGHT WITH n_dyhe,WIDTH WITH n_filen,penred WITH -1,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,supgroup WITH 3,;
fillgreen WITH -1,fillblue WITH -1,fontface WITH "宋体",;
FONTSIZE WITH 9,mode WITH 1,supalways WITH .T.,offset WITH 2;
supgroup WITH 3,uniqueid WITH "_WORK" + c_zdmi
APPEN BLANK && 放置字段
REPLACE platform WITH "WINDOWS",objtype WITH 8,objcode WITH 0,;
EXPR WITH c_data + "." + c_finame,vpos WITH n_msto + (n_mshe - n_dyhe)/2,;
hpos WITH n_bgpb + n_msjg,;
HEIGHT WITH n_dyhe,WIDTH WITH n_filen,fillchar WITH "C",penred WITH -1,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,;
fillgreen WITH -1,fillblue WITH -1,fontface WITH "宋体",;
FONTSIZE WITH n_dyfs,mode WITH 1,supalways WITH .T.,;
uniqueid WITH "_WORK" + c_uniq
n_bgpb = n_bgpb + n_filen + n_msjg * 2
APPEN BLANK &&描竖线,字段间的间隔线
REPLACE platform WITH "WINDOWS",objtype WITH 6,objcode WITH 0,;
vpos WITH n_msto + 50,hpos WITH n_bgpb,;
HEIGHT WITH n_mshe + 150,WIDTH WITH 100,penred WITH -1,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,;
fillgreen WITH -1,fillblue WITH -1,pensize WITH 1,;
penpat WITH 8,supalways WITH .T.,uniqueid WITH "_WORK" + c_line
* N_BGPB = N_BGPB + N_FILEN + N_MSJG * 2
ENDFOR
SELECT 2
n_mswi = hpos - n_msle
c_i = ALLTRIM(STR(i+1))
*C_LINE = IIF(I+1<=9,"LLL0" + C_I,IIF(I+1<=99,"LLL" + C_I,"LL" + C_I))
c_line = SUBSTR("LLLLL",1,5 - LEN(c_i)) + c_i
APPEN BLANK &&左端第一条坚线
REPLACE platform WITH "WINDOWS",objtype WITH 6,objcode WITH 0,;
vpos WITH n_msto - 100,hpos WITH n_msle,;
HEIGHT WITH n_mshe + 245,WIDTH WITH 100,penred WITH -1,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,;
fillgreen WITH -1,fillblue WITH -1,pensize WITH 1,;
penpat WITH 8,supalways WITH .T.,uniqueid WITH "_WORK" + c_line
c_i = ALLTRIM(STR(i+2))
*C_LINE = IIF(I+2<=9,"LLL0" + C_I,IIF(I+2<=99,"LLL" + C_I,"LL" + C_I))
c_line = SUBSTR("LLLLL",1,5 - LEN(c_i)) + c_i
APPEN BLANK &&上方第一条横线
REPLACE platform WITH "WINDOWS",objtype WITH 6,objcode WITH 0,;
vpos WITH n_msto - 2200,hpos WITH n_msle,;
HEIGHT WITH 100,WIDTH WITH n_mswi + 100,penred WITH -1,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,;
fillgreen WITH -1,fillblue WITH -1,pensize WITH 1,;
penpat WITH 8,supalways WITH .T.,uniqueid WITH "_WORK" + c_line
APPEN BLANK &&数据行线
c_i = ALLTRIM(STR(i+3))
*C_LINE = IIF(I+3<=9,"LLL0" + C_I,IIF(I+3<=99,"LLL" + C_I,"LL" + C_I))
c_line = SUBSTR("LLLLL",1,5 - LEN(c_i)) + c_i
REPLACE platform WITH "WINDOWS",objtype WITH 6,objcode WITH 0,;
vpos WITH n_msto + n_mshe,hpos WITH n_msle,;
HEIGHT WITH 100,WIDTH WITH n_mswi + 100,penred WITH -1,;
pengreen WITH -1,penblue WITH -1,;
fillgreen WITH -1,fillblue WITH -1,pensize WITH 1,;
penpat WITH 8,supalways WITH .T.,uniqueid WITH "_WORK" + c_line
DO CASE
CASE l_zdzz .AND. n_mswi < 82500
n_kbqu = (82500 - n_mswi)/2
DO CASE
CASE n_msle > n_kbqu
REPLACE ALL FOR SUBSTR(uniqueid,1,5) = "_WORK" hpos WITH hpos - (n_msle - n_kbqu)
CASE n_msle < n_kbqu
REPLACE ALL FOR SUBSTR(uniqueid,1,5) = "_WORK" hpos WITH hpos + (n_kbqu - n_msle)
otherwise
ENDCASE
CASE l_zdzz .AND. n_mswi >= 82500
REPLACE ALL FOR SUBSTR(uniqueid,1,5) = "_WORK" hpos WITH hpos - n_msle
ENDCASE
APPEN BLANK
REPLACE platform WITH "WINDOWS",objtype WITH 5,objcode WITH 0,;
EXPR WITH " " + c_title + " ",vpos WITH 3500,hpos WITH (82500 - LEN(c_title)*1150)/2,;
HEIGHT WITH 3500,penred WITH -1,WIDTH WITH LEN(c_title) * 2000,;
pengreen WITH -1,penblue WITH -1,fillred WITH -1,;
fillgreen WITH -1,fillblue WITH -1,fontface WITH "宋体",;
FONTSIZE WITH 16,mode WITH 1,supalways WITH .T.,offset WITH 2;
supgroup WITH 3,uniqueid WITH "_WORK" + "TITLE"
SELECT 1
USE
SELECT 2
USE
REPORT FORM hhh.frx PREVIEW
|
|