vfp 如何一次性彻底删除当前记录,命令是??在线等答案!

vfp 如何一次性彻底删除当前记录,命令是??在线等答案!,第1张

ZAP &&物理删除当前选定的记录
或者是
DELETE &&逻辑删除选定的记录,可以恢复
PACK &&物理删除已经逻辑删除过的记录
比如:
use tabledbf excl &&以独占方式打开要 *** 作的表
go top &&移动指针到第一行
locate for name="王八" &&定位记录
if found() &&判断条件
zap &&彻底删除记录
endif
它与下面的程序是等价的:
use tabledbf excl &&以独占方式打开要 *** 作的表
go top &&移动指针到第一行
locate for name="王八" &&定位记录
if found() &&判断条件
delete &&给记录标注删除符号
pack &&物理删除有删除标记的记录
endif

不要dele from
直接select g1
dele for 姓名=alltrim(thisformtext1value)
pack
还有提醒你一下,处理记录的时候,最好少用永久删除。。这不是一个好习惯。

1所有记录全部一次性删除,可以使用PACK命令
2满足某些条件的记录删除,有两种方法,用SQL命令或VF命令,如删除学生表中所有性别为男的记录,可以用:
1)SQL命令
DELETE FROM 学表 WHERE 性别="男"
PACK
2)VF命令
DELETE FOR 性别="男"
PACK

要一个一个的表清空,例如:
use 表A
ZAP
搜索到一个小程序,你可以试试看:
use databasedoc
copy to array _arr field objectname for alltrim(objecttype)="Table"
use
for i=1 to alen(_arr)
g=alltrim(_arr[i])
use (g) exclusive
zap
use
endfor

我认为问题可能出在:
1)Grid1,使用“数据环境”,也就是用向导生成的,没有用use打开表,如果是这样,从数据环境中移除表,用命令在表单的init事件中打开,在释放表单时,不要忘记关闭表;
2)没有使用“数据环境”,打开表时没用独占命令,因为pack命令,需要独占表,
use 零件信息表 excl 。
3)“文件正在使用”,如果在第一次运行时不提示,之后就提示,说明在释放表单时,没关闭表;

表单中要删除GRID中的记录,可按下面方法:
thisformgridrecordsource="" &&作用是先将表格的数据源设为空,否则在对删除的表记录进行PACK *** 作时,GRID会变空白
delete for 删除条件 &&此处删除表记录
pack
go top
thisformgridrecordsource="表名" &&作用是重新给表格指定数据源

你这个cursor表是一个临时表还是磁盘上的表,如果是临时表只需要重新打开一个其它的磁盘上的表,就自动删除了,如果是磁盘上的表,可以用“delete file cursor”命令来删除。

查找到以后,加上删除标记,然后再物理删除。
如程序:
use
学生档案
accept
"输入要查询的姓名:"
to
name
locate
for
姓名=name
&&查询
do
while
found()
&&如果有满足条件的记录就循环
delete
&&给找到的记录加上删除标记
continue()
&&继续查询
enddo
pack
&&将找到的记录彻底删除
use


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13076800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存