标题:报表给包括进项目去,怎么复制副本出来?
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
结帖率:98.96%
已结贴  问题点数:20 回复次数:4 
报表给包括进项目去,怎么复制副本出来?
比如:
报表文件:收款.frx,收款.frt
报表放在目录 rpt 中,包含在项目中,
现在为了第1次设置纸张后,下次进来,就不用再设置,吹斑说用副本
我是这样
if !file("rpt\默认收款.frx") or !file("rpt\默认收款.frt")
   copy file rpt\收款.frx to rpt\默认收款.frx
   copy file rpt\收款.frt to rpt\默认收款.frt
endif
这里就有个问题了,既然 收款.frx,收款.frt给包含在项目了,那发布时,就不包括源文件了,也就是说 rpt\收款.frx,rpt\收款.frt文件不存在了,那怎么复制副本出来啊


搜索更多相关主题的帖子: 源文件 项目 file 
2016-06-18 12:43
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
*我自己找到方法了。
*第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
2016-06-18 16:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:15 
直接 USE 收款.frx ...... COPY TO ...... 就可以
2016-06-18 16:46
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:5 
以下是引用mywisdom88在2016-6-18 16:23:06的发言:

*我自己找到方法了。
*第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
方法挺好
2016-06-18 17:16
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用吹水佬在2016-6-18 16:46:21的发言:

直接 USE 收款.frx ...... COPY TO ...... 就可以
还真好,
use 收款.frx in 0
copy to 默认收款.frx
2016-06-18 22:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466074-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028794 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved