{发生错误,则操作失败}
Result:=RecordProps.iPhyRecNum;
{取得记录号}
end;
end;
四.设置
查询匹配方式(精确匹配/非精确匹配)
在用 Foxpro 时, SetExactON/OFF 对数据
查询影响
很大. 在 Delphi 中, 我们同样可以进行这样的设置.
要用到的函数名为 DbiSetProp, 这次用的属性名
称 iProp 为 curINEXACTON, 属性值 iPropValue 为 True
或 False,True 表示 SetExactOFF.
下面就是一个典型的例子. 同样, 应在 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(notExactOn));
if errResult=DBIERR_NONE then
{没有错误,操作成功}
result:=true
else
{发生错误,操作失败}
result:=false;
end;
五.恢复被软删除的记录
在Delphi应用
程序中, 对 DBF 数据表执行的删除
操作为软删除操作. 由于物理记录并没有从数
据表中删除, 我们就可以恢复被软删除的
记录, 只要去掉删除标志即可.
要用到的函数名为 DbiUndeleteRecord, 函数原型为:
function DbiUndeleteRecord(hCursor:hDBICur):DBIResult;
其中, hCursor 可为数据集的 Handle.
下面就是一个典型的例子. 同样, 应在 uses 语句加
上 DbiTypes, DbiProcs, DbiErrs.
{恢复被软删除的记录}
function UndeleteRecord (DbfTable:TTable):boolean;
begin
Result:=false;
{返回false表示函数执行失败}
with DbfTable do begin
{如果数据集处于非活动状态,则执行失败}
if not active then exit;
{使数据集的当前记录与实际的当前记录的位置一致}
UpdateCursorPos;
{恢复被软删除的记录}
if DBIERR_NONE<>DbiUndeleteRecord(Handle) then
&n