*我自己找到方法了。
*第1次运行时,复制报表副本
*报表“收款.frx,收款.frt”包含在项目文件中
if !file("rpt\默认收款.frx") or !file("rpt\默认收款.frt") &&报表不存在
create table temp\默认表(BH C(12),SJH C(12)) &&随便创建1个表报数据源
use in 默认表 &&关闭数据源
create report rpt\默认收款.frx from temp\默认表.dbf &&随便创建1个快速表报
use rpt\默认收款.frx alias 默认收款 excl in 0 &&打开表报文件
zap in 默认收款 &&清空原先无用报表数据
append from rpt\收款.frx &&复制表报文件
use in 默认收款
delete file temp\默认表.* &&把刚才建立的数据源删除掉,也可以不删除
endif
*上面复制出报表副本,第1次设置纸张时,使用默认报表,以后就不需要再设置了
*主要代码如下:
=SetPaper("默认收款.frx")
function SetPaper(lcRptName)
local lcFrxName,lcAlias
lcAlias=ALIAS() &&保存数据环境
lcFrxName=SUBSTR(lcRptName,1,LEN(lcRptName)-4)
IF USED(lcFrxName) &&关闭表单,用独占方式再打开
USE IN (lcFrxName)
ENDIF
USE "rpt\"+lcRptName EXCLUSIVE ALIAS (lcFrxName) IN 0
IF USED(lcFrxName)
SELECT (lcFrxName)
IF TRANSFORM(SYS(1037,1))="1"
MESSAGEBOX("设置报表【" + lcFrxName + "】纸张成功!",64,"设置纸张")
ELSE
MESSAGEBOX("设置报表【" + lcFrxName + "】纸张失败!",64,"设置纸张")
ENDIF
USE IN (lcFrxName) &&关闭报表
ELSE
MESSAGEBOX("设置报表【" + lcFrxName + "】纸张失败!",64,"设置纸张")
ENDIF
IF !EMPTY(lcAlias)
SELECT (lcAlias)
ENDIF
endfunc