或者是
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)