不知你是用何命令删除记录的如果用SQL的DELETE命令我想应不会出现这种情况吧(我没有用过DBF在DELPHI中,不知行不行你测试一下)
解决方案 »
- 动态加载DLL中函数
- Delphi群号
- delphi 2005 如如何安装第三方控件?
- [不能读取记录,在‘MsysAccessObjects’上没有读取数据权限!]
- 现在正式转做java了,散分,下次上网时结贴,做java的也冒出来一下啊!
- 作了一个数据库程序如何用InstallShield.for.Delphi7进行制作安装程序????
- 大侠们,给小弟推荐几个有关于delphi,sql server的英文文章的网站吧。
- 怎么从一个窗体打开另外一个窗体??
- 请问谁机子上有msdn呀?我想要上面的字符映射表~
- 如何在Delphi7.0中使用RichEdit98控件?
- THeaderControl 怎么用?
- 3个小问题
with query1 do
sql.clear;
sql.add('delete from 表 where 条件');
sql.open;没用的,结果只是加了个删除标记而已,还有:
table1.close;
table1.open;
with table1 do
table1.delete;结果也是这样,唉,真令我大伤脑经啊 !!! 我该如何 ???
COOER兄,怎么,你也遇到这种情况啊 ?没错,和我一样,我就是没搞明白,是不是DELPHI不能真正删除记录啊 ???
DELPHI一定可以真正删除记录,只是我还没掌握而已,你再等等,看别人怎么说吧,我关注。
我记得以前在用FOXPRO系列编程时,要想彻底清除已被删除的记录,似乎要在DELETE命令后加上一个PACK命令。
另外,被删除的记录虽然仍然能够看见,但是好象并不能被操作了。
上面是我的一些模糊的看法,希望能给你们一点提示。
你能不能说的清楚点,详细点,最好能给我一个简单的例子,被加上删除标记的记录是不能再操作了,可是记录依然占用空间啊,我是要把记录彻底剔除掉。
或使用ZAP,具体用法记不清了!
(见 BDE Administartor Help)
Delphi只是个数据库的客户,可能不能和FOXPRO一样进行数据库管理级的控制,除非使用BDE。procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
if not Table.Active then
raise EDatabaseError.Create('Table must be opened to pack');
if not Table.Exclusive then
raise EDatabaseError.Create('Table must be opened exclusively to pack');
Check(DbiGetCursorProps(Table.Handle, Props));
if Props.szTableType = szPARADOX then begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end
else
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else
raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +
'type to pack');
Table.Open;
end;