如何将整个目录下的自由表加入到一个工程中去?谢谢

sjkhy799110 2004-11-11 09:10:44
如何将整个目录下的自由表加入(链接)到一个工程中去?
这个目录的自由表由另一程序生成!
...全文
91 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xclzteb 2004-11-12
  • 打赏
  • 举报
回复
直接编写代码就可以了,没必要加到工程中去。
dfwxj 2004-11-12
  • 打赏
  • 举报
回复
这是UNFOXALL的项目文件生成程序,你试试

*---------------------------------------------------*
* 文件名 : BuildPJX.prg *
* 功能描述 : 根据UnFoxAll反编译产生的文件创建一个 *
* 工程文件 *
* 运行环境 : FoxPro for DOS/Windows 2.x *
* Visual FoxPro 3.0/5.0/6.0 *
* *
* 研 制 人 : 穆鹏义 (Email:mupengyi@371.net) *
*---------------------------------------------------*

*----Input with the full path and filename of project table: *.PJ_
PARAMETER ufalist
IF not FILE('&ufalist')
WAIT WINDOW '工程信息文件未找到!' timeout 5.0
close all
quit
ENDIF
CLEA
close all
IF .not. ('3.0'$VERSION() or '5.0'$VERSION() or '6.0'$VERSION())
IF FILE('TEMP1.PJX')
ERASE TEMP1.PJX
ENDIF
IF FILE('out.dbf')
ERASE out.dbf
ENDIF
endif
DEFINE WINDOW mpywindow FROM INT((SROW()-13)/2),INT((SCOL()-71)/2) ;
TO INT((SROW()-13)/2)+12,INT((SCOL()-71)/2)+70 TITLE "UNFOXALL工程文件生成工具 V1.0" ;
FLOAT NOCLOSE SHADOW NOMINIMIZE DOUBLE COLOR SCHEME 7
ACTIVATE WINDOW mpywindow
@1,1 say ' ?本文件用于创建一个FOXPRO的工程文件, 支持:'
@2,1 say ' ?FoxPro for DOS/Windows 2.x, Visual FoxPro 3.0/5.0/6.0'

@4,1 say ' ?命令行参数说明:'
@5,1 say ' ? BUILDPJX <filename>.PJ_'

@7,1 say ' 作者: 穆鹏义'
use
IF FILE('unfoxall.tab')
ERASE unfoxall.tab
ENDIF
IF FILE('out.dbf')
ERASE out.dbf
ENDIF
IF FILE('out.fpt')
ERASE out.fpt
ENDIF
Activate Screen
filename=(ufalist)
filepath=LEFT(FILENAME, rat('\',alltrim(FILENAME)) )
set default to (filepath)
CREATE TABLE unfoxall.tab (FNAME C(55), XPAD1 C(1), PJTYPE C(4), XPAD2 C(1), LONGNAME C(128))
EXT = UPPER(RIGHT(ALLTRIM(filename),3))
IF !FILE(FILENAME)
WAIT WINDOW 'FILE NOT EXIST!!!'
QUIT
ENDIF
LFA = ALIAS()
APPEND FROM (filename) TYPE DELIMITED
EXIN = 'PRG TXT ICO MSK DBF DBC FPT CDX VCX VCT FMT FRT SCX SCT LBX LBT MNX MPR MNT BMP MSK FLL APP QPR SPR PLB FRX CUR H '
IF .not. ('3.0'$VERSION() or '5.0'$VERSION() or '6.0'$VERSION()) && is 2.5/2.6
EXOUT= 'P x x x D d out I V out R out K out B out M P out x x L Z Q P L R x T '
else
EXOUT= 'P T x x D d out I V out R out K out B out M P out x x L Z Q P L R x T '
endif
ISTABLE = 'DBF MNX FRX LBX SCX VCX'
SELECT 0
PROJSTUB = LEFT(FILENAME,LEN(ALLTRIM(FILENAME))-4)
PROJSTUB = SUBSTR(PROJSTUB,RAT('\',PROJSTUB)+1)
PROJF = PROJSTUB+".PJX"
USE
IF .not. ('3.0'$VERSION() or '5.0'$VERSION() or '6.0'$VERSION())
KEYBOARD(CHR(23)) && 'CRTL + W'
CREATE PROJECT TEMP1
use
release WINDOW output
COPY FILE TEMP1.PJX TO OUT.DBF
COPY FILE TEMP1.PJT TO OUT.FPT
else
CREATE PROJECT (PROJF) NOWAIT
PROJW = "Project Manager - "+PROPER(projstub)
KEYBOARD ('R')
RELEASE WIND (PROJW)
CLOSE ALL
COPY FILE (PROJSTUB)+'.PJX' TO OUT.DBF
COPY FILE (PROJSTUB)+'.PJT' TO OUT.FPT
ERASE (PROJSTUB)+'.PJX'
ERASE (PROJSTUB)+'.PJT'
SELECT 0
USE unfoxall.tab
LFA = ALIAS()
endif
SELECT 0
UNU = SELECT()
SELECT (LFA)
SCAN
EXT = UPPER(RIGHT(ALLTRIM(FNAME),3)) && filename's extern
N=ALLTRIM(FNAME)
L = .T.
K = UPPER(LEFT(FNAME,AT('.',FNAME)-1))
T = IIF(EMPTY(SUBSTR(EXOUT,AT(EXT,EXIN),1)),'x',SUBSTR(EXOUT,AT(EXT,EXIN),1))
IF UPPER(RIGHT(N,3))$ISTABLE
IF FILE('&N')
USE (N) IN (UNU)
CP = CPDBF(UNU)
USE IN (UNU)
SELECT (LFA)
ELSE
CP = CPCURRENT()
ENDIF
ELSE
CP = 0
ENDIF
WAIT WINDOW '正在添加 : '+UPPER(N) +' 到工程文件' TIMEOUT 0.2
PRGMAIN = PJTYPE='Main'
IF .NOT. T=='o'
IF '5.0'$VERSION()
IF CP = 0
INSERT INTO OUT (NAME,TYPE,LOCAL,KEY,MAINPROG) VALUES(N,T,L,K,PRGMAIN)
ELSE
INSERT INTO OUT (NAME,TYPE,LOCAL,KEY,MAINPROG,CPID) VALUES(N,T,L,K,PRGMAIN,CP)
ENDIF
ELSE
IF '3.0'$VERSION()
IF CP = 0
INSERT INTO OUT (NAME,TYPE,KEY,MAINPROG) VALUES(N,T,K,PRGMAIN)
ELSE
INSERT INTO OUT (NAME,TYPE,KEY,MAINPROG,CPID) VALUES(N,T,K,PRGMAIN,CP)
ENDIF
ELSE &&FOXPRO 2.5 /2.6 FOR DOS/WINDOWS
IF CP = 0
INSERT INTO OUT (NAME,TYPE,MAINPROG) VALUES(N,T,PRGMAIN)
ELSE
INSERT INTO OUT (NAME,TYPE,MAINPROG,CPID) VALUES(N,T,PRGMAIN,CP)
ENDIF
ENDIF
ENDIF
ENDIF
ENDSCAN
close all
s2=PROJSTUB+'.PJT'
s1=PROJSTUB+'.PJX'
COPY FILE OUT.DBF to (s1)
COPY FILE OUT.fpt to (s2)
ERASE unfoxall.tab
ERASE out.dbf
ERASE out.fpt
ERASE TEMP1.PJX
ERASE TEMP1.PJT
clea
@8,1 say ' 工程文件创建完毕!'
*WAIT WINDOW 'Project file *** '+PROJF+' *** Build Completed !' timeout 4.0
RELEASE WIND mpywindow
*-----MODIFY PROJECT (PROJF) NOWAIT
QUIT
***** End *****
sjkhy799110 2004-11-11
  • 打赏
  • 举报
回复
谢谢:apple_8180(十豆三)

能否讲清楚点,不明白
十豆三 2004-11-11
  • 打赏
  • 举报
回复
用变量:
Public CFile
CFile=DTOS(DATE())+".dbf"
sjkhy799110 2004-11-11
  • 打赏
  • 举报
回复
换个说法吧:
现在公司有个系统没有源程序
该系统将每天的数据生成一个如 20041111.dbf 的表放在一个目录下
我现在要对这些数据作些处理(汇总等)请问怎样可以实现
vfp新手,请高手指点,不胜感谢
yhf_zhangqian 2004-11-11
  • 打赏
  • 举报
回复
Local FileName,BegDate,EndDate
BegDate='2004.11.01'
EnDate=Date()
Do while BegDate<=EnDate
FileName=Dtos(date())
if file(FileName+'.dbf')
if !Used(&FileName)
use &FileName in 0 again share alias File
endif
......
BegDate=BegDate+1
endif
EndDo
十豆三 2004-11-11
  • 打赏
  • 举报
回复
点击工程中的“数据”,选择“自由表”,点击右边的“添加”。
十豆三 2004-11-11
  • 打赏
  • 举报
回复
SET DATE TO YMD
SET CENTURY ON
LOCAL YearMonth,Ddate,CFile
YearMonth="200411" &&比如你要汇总2004年11月份的
Ddate=CTOD(SUBSTR(YearMonth,1,4)+"/"+SUBSTR(YearMonth,5,2)+"/01")
FOR I=27 TO 31
IF MONTH(Ddate+I)!=11
I=I-1
EXIT
ENDIF
ENDFOR
FOR J=0 TO I
CFile=DTOS(Ddate+J)+".dbf"
USE 表A &&表A为与20041111.dbf结构一样的表
ZAP
APPEND FROM &CFile
ENDFOR
&&然后你对表A进行操作(汇总)即可。
&&如果你要汇总2003年11月份的,只需修改YearMonth的值即可
LAIYANGPJ 2004-11-11
  • 打赏
  • 举报
回复
新建一个表,如果你的表是安日期排的话可以用
FOR I=20040101 TO VAL(DTOS(DATE())
.
.
.
&&以上是你要处理所有表的代码
ENDFOR
相关推荐
发帖
VFP

2574

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-11-11 09:10
社区公告
暂无公告