11
2007
02
一些很有用的VFP代码
这两天我一直在完善以前做的一个VFP程序,期间碰到不少问题。经过百度搜索和在CSDN发帖询问,我解决了绝大部分问题,同时学习到不少有用的知识。现整理一些比较典型的VFP语句,供大家参考。
————————————————————————
退出按钮代码
if messagebox('你真的要退出本系统吗?',4+32+256,'请确认')=7 &&用户回答"否"
nodefault &&表示不进行默认的行为模式
else
clear events &&是否要支行clear,视需要而定
quit
endif
————————————————————————
导入EXCEL数据,另存为DBF表
IMPORT FROM (GETFILE('XLS', '','', 0, '选择一个EXCEL表,然后另存为DBF表')) TYPE XL5 &&或XL8
COPY TO PUTFILE('', '', 'DBF')
lcTmpTable=DBF()
CLOSE DATABASES
Delete FILE (lcTmpTable)
————————————————————————
VFP中导入EXCEL,使原来EXCEL第一行变为DBF字段名
import from E:\test\原表.xls type xls
copy to test.dbf for recno()>1
go top
lnFieldNum=fcount()
lcString='Select '
for lnCount=1 to lnFieldNum
lcString=lcString+field(lnCount)+' As '+alltrim(evaluate(field(lnCount)))+','
endfor
lcString=left(lcString,len(lcString)-1)+' into table ttt2 from test'
&lcString
————————————————————————
超链接代码(文本或按钮click)
ThisForm.HyperLink1.NavigateTo("www.ntfda.gov.cn")
————————————————————————
改变路径
set path to D:\完成
————————————————————————
获取当前程序所在路径
*方法一:
**********************
PUBLIC LCNowpath
LCNowpath=SYS(5)+SYS(2003)+"\"
set default to "&LCNowpath" &&设置默认工作目录
**********************
*方法二:
**********************
PUBLIC LCSys16,LCNowpath
LCSys16=SYS(16) &&获取当前程序所在的全路径,包括当前运行程序名。
LCNowpath=LEFT(LCsys16,RAT("\",LCSys16,1)) &&获取当前运行程序所在工作目录。
set default to "&LCNowpath" &&设置默认工作目录
**********************
*方法三:(指定程序名)
**********************
PUBLIC LCNowpath
prgname="你的程序名.exe"
prglen=len(prgname)
allname=allt(sys(16))
alllen=len(allname)
LCNowpath=substr(allname,1,alllen-prglen)
set default to "&LCNowpath" &&设置默认工作目录
**********************
PUBLIC LCSys16,LCNowpath
LCSys16=SYS(16) &&获取当前程序所在的全路径,包括当前运行程序名。
LCNowpath=LEFT(LCsys16,RAT("\",LCSys16,1)) &&获取当前运行程序所在工作目录。
messagebox(LCNowpath) &&程序文件所在的当前路径
————————————————————————
记住打开文件路径,并将处理结果输出到该路径中
xfile=getfile('xls', '','', 0, '选择需要处理的文件')
import from &xfile type xls
if empty(xfile)
retu
endif
set path to justpath(xfile)
dir
copy to (getfile('xls', '','', 0, '将处理结果存为EXCEL文件')) type xls
————————————————————————
筛选A表中相同记录到B表
select distinct * from 表A into table D:\完成\表B
————————————————————————
如果A表品名包含B表品名而且A表产地包含B表产地,将符合记录筛选到新表
select * from a,b where AT(alltrim(b.品名),a.品名)>0 and AT(alltrim(b.产地),a.产地)>0
select b.品名,a.产地,b.生产单位,b.规格,b.批号 from a,b where AT(alltrim(b.品名),a.品名)>0 and AT(alltrim(b.产地),a.产地)>0
————————————————————————
删除产地字段中含有云南的记录
dele for AT([云南],产地)>0
————————————————————————
合并结构相同的表
方法1
USE 1.DBF
COPY STRU TO 总表
USE 总表
FOR I=1 TO 1000
APPEND FROM (ALLTRIM(STR(I))+'.DBF')
ENDFOR
方法2
gnDbcnumber = ADIR(gadbf,'*.dbf') && 创建一个数组
FOR nCount = 1 TO gnDbcnumber && 遍历所有文件中扩展名为.dbf的文件
IF nCount=1
USE (gadbf(nCount,1))
COPY TO 新表名
USE 新表名
ELSE
APPEND FROM (gadbf(nCount,1))
ENDIF
ENDFOR
————————————————————————
VFP6.0绿色版下载地址:http://www.greendown.cn/soft/2422.html
发布:徐景岳 | 分类:景岳手记 | 评论:0 | 浏览:
相关文章:
多个DBF文件合并之蹊跷事件 (2009-5-7 23:48:23)
如何避免表单重复打开? (2007-8-11 23:26:50)
药品数据分析系统截图 (2007-4-16 13:18:56)
对比程序的最后测试 (2006-5-2 10:7:11)
终于结束了,我的数据库! (2006-4-27 23:39:33)
求助是一条捷径 (2006-4-12 12:44:0)
重拾遗忘的编程 (2006-4-2 22:22:30)
郁闷的人到深夜 (2005-11-11 20:48:5)
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。