急急急:如何查找有删除标志的记录?(100分)

  • 主题发起人 主题发起人 logical
  • 开始时间 开始时间
L

logical

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一.DBF库,要求用Tabe->Locate()找出任一记录而不管是否有删除标志,怎么办?急急急,望各高手救命,我给100分.
 
我知道,记录做了删除标志,但并没有禁止对其的数据库的操作,
如使用
List <cr>
即可列出数据库中的所有记录,包含作了删除标志的记录,
我想,使用检索条件即可确定你要找的记录,试一试如何?
 
to:James
请说得具体一点,谢谢。
 
好象在BDE中没有办法查询出已删除的纪录.
我在TTable, TDatabase, TSession中没有发现一个属性和删除标记有关.
BDE API 中我也没有找到相关函数.
 
请继续讨论。
 
别讨论了,没办法的,除非PACK了,否则——白搭
 
----     下 面 就 是 一 个 典 型 的 例 子 .

应在uses语句加上DbiTypes,DbiProcs,DbiErrs.

{设置匹配方式,DbfTable
包含了数据表的信息,ExactOn
表示是否精确匹配,True表示是 }
function SetDbfExact( DbfTable :
TTable ; ExactOn : boolean ) : boolean;
var
errResult : DBIResult;
begin
{如果没有打开,则操作失败 }
if ( not DbfTable.active ) then
begin
result := false;
exit;
end;

{进行设置显示操作 }
errResult := DbiSetProp( hDBIObj(DbfTable.Handle),
curINEXACTON,
LongInt( not ExactOn ));

if errResult = DBIERR_NONE then
{没有错误,操作成功 }
result := true
else{发生错误,操作失败 }
result := false;
end;
 
用BDE API的"DbiSetProp"函数,具体见BDE Administrator中的帮助:

uses DbiTypes,DbiProcs,DbiErrs;

//This example uses the following input:
fDbiSetProp1(AnimalTbl, True);


//The procedure is:
procedure fDbiSetProp1(Table: TTable; SoftDelete: Boolean);
var
rslt: DBIResult;
Props: CURProps;
begin
Check(DbiGetCursorProps(Table.Handle, Props));
if (Props.szTableType <> szDBASE) then
raise EDBEngineError.Create(DBIERR_NOTSUPPORTED);
// Make sure that the property can be set
rslt := DbiValidateProp(hDBIObj(Table.Handle), curSOFTDELETEON, True);
if (rslt = DBIERR_NONE) then
// Set the property
Check(DbiSetProp(hDBIObj(Table.Handle), curSOFTDELETEON, Longint(SoftDelete)))

else
raise EDBEngineError.Create(rslt);
end;

 
多人接受答案了。
 
后退
顶部