foxpro表中如何查找部分相同数据
1个回答
展开全部
* ------------------------------------------------------------------------------------
* 系统平台:VFP6.0
* 类 型:自定义函数
* 功 能:将源DBF文件中重复记录剔除,结果存到新DBF中。
* 思 路:利用SQL...Group By全部字段,来读取唯一记录。
* 参 数:SurDBF源文件,ObjDBF目标文件
* 返回参数FT
* 注意事项:使用【完整的文件名】--仅基本检测,无自动判断
* 确保【目标文件安全】--以免误盖,目标后缀可略
* 确保源文件能打开,目标文件能写入
* 调用方法:?、=、do with、表达式套用
* 后 遗 症:SQL打开的文件未关闭。
* 程序编写:hanhezhai 2014.01.14
* ------------------------------------------------------------------------------------
Parameters SurDBF,ObjDBF && 设定参数
if type('SurDBF')#'C'.or.type('ObjDBF')#'C'&& 非字符型不接受
=messagebox('参数类型错误!',0,'提示')
return .f.
endif
if !file(SurDBF) && 判断源文件存在
=messagebox('源文件不存在!',0,'提示')
return .f.
endif
mSele = 'Select ' + str(select()) && 保存当前工作区
Use (SurDBF) in 0 again alia tmp001 && 如果之前已经打开,这个again就看出效果了
mFileds=FCOUNT('tmp001') && 提取字段个数
use in tmp001 && 关闭,操作不留痕
mlist='1' && 生成SQL表达式
for aa=2 to mfileds
mlist=mlist + ',' + str(aa,3)
endfor
mSQL='Select * from ' + SurDBF + ' Group by ' + mlist + ' into DBF '+ ObjDBF
&mSQL && 宏.执行SQL表达式
&mSele && 宏.回到原工作区
return .t.
* ------------------------------------------------------------------------------------
* 如果上面觉得烦!那么用下面这个简洁的:
* ------------------------------------------------------------------------------------
Parameters SurDBF,ObjDBF && 设定参数
clos all
Sele 0
Use (SurDBF) && 打开表
mFileds=FCOUNT() && 提取字段个数
mlist='1' && 生成SQL表达式
for aa=2 to mfileds
mlist=mlist + ',' + str(aa,3)
endfor
mSQL='Select * from '+SurDBF+' Group by '+mlist+' into DBF '+ObjDBF
&mSQL && 宏.执行SQL表达式
return
* ------------------------------------------------------------------------------------
* 系统平台:VFP6.0
* 类 型:自定义函数
* 功 能:将源DBF文件中重复记录剔除,结果存到新DBF中。
* 思 路:利用SQL...Group By全部字段,来读取唯一记录。
* 参 数:SurDBF源文件,ObjDBF目标文件
* 返回参数FT
* 注意事项:使用【完整的文件名】--仅基本检测,无自动判断
* 确保【目标文件安全】--以免误盖,目标后缀可略
* 确保源文件能打开,目标文件能写入
* 调用方法:?、=、do with、表达式套用
* 后 遗 症:SQL打开的文件未关闭。
* 程序编写:hanhezhai 2014.01.14
* ------------------------------------------------------------------------------------
Parameters SurDBF,ObjDBF && 设定参数
if type('SurDBF')#'C'.or.type('ObjDBF')#'C'&& 非字符型不接受
=messagebox('参数类型错误!',0,'提示')
return .f.
endif
if !file(SurDBF) && 判断源文件存在
=messagebox('源文件不存在!',0,'提示')
return .f.
endif
mSele = 'Select ' + str(select()) && 保存当前工作区
Use (SurDBF) in 0 again alia tmp001 && 如果之前已经打开,这个again就看出效果了
mFileds=FCOUNT('tmp001') && 提取字段个数
use in tmp001 && 关闭,操作不留痕
mlist='1' && 生成SQL表达式
for aa=2 to mfileds
mlist=mlist + ',' + str(aa,3)
endfor
mSQL='Select * from ' + SurDBF + ' Group by ' + mlist + ' into DBF '+ ObjDBF
&mSQL && 宏.执行SQL表达式
&mSele && 宏.回到原工作区
return .t.
* ------------------------------------------------------------------------------------
* 如果上面觉得烦!那么用下面这个简洁的:
* ------------------------------------------------------------------------------------
Parameters SurDBF,ObjDBF && 设定参数
clos all
Sele 0
Use (SurDBF) && 打开表
mFileds=FCOUNT() && 提取字段个数
mlist='1' && 生成SQL表达式
for aa=2 to mfileds
mlist=mlist + ',' + str(aa,3)
endfor
mSQL='Select * from '+SurDBF+' Group by '+mlist+' into DBF '+ObjDBF
&mSQL && 宏.执行SQL表达式
return
* ------------------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询