tProp(hObj:hDBIObj;iProp:Longint;
iPropValue:Longint):DBIResult;
该函数用来设置 DBI 对象中某个属性的值. 其
中, hObj 为 DBI 对象名称, 我们这里为数据表 TTable
的句柄; iProp 为属性名称, 我们用的是软删除属性
curSOFTDELETEON; iPropValue 为属性值, 我们用 True
或 False 表示是否使软删除的记录被显示.
下面就是一个典型的例子.
同样,应在 uses 语句加上 DbiTypes, DbiProcs, DbiErrs.
{显示DBF数据表中的软删除记录,DbfTable包含了数据表的信
息,DeleteOn表示是否显示,True表示显示}
function SetDbfDelete(DbfTable:TTable;DeleteOn:
boolean):boolean;
var
errResult:DBIResult;
begin
result:=false;{操作失败时,返回False}
{如果数据表没有打开,则操作失败}
if (not DbfTable.active) then exit;
{进行设置显示操作}
errResult:=DbiSetProp(hDBIObj(DbfTable.Handle),
curSOFTDELETEON, LongInt(DeleteOn));
if errResult=DBIERR_NONE then
{没有错误,则操作成功}
begin
result:=true;
DbfTable.refresh;
end;
end;
三.获取当前记录号
在用 Foxpro 时, RecNo() 函数用惯了, 在Delphi
程序 没有这样的函数觉得别扭. 下面我们可以用 BDE 函数获取当
前记录在数据集中的记录号.
要用到的函数名为 DbiGetRecord, 函数原型为
functionDbi GetRecord(hCursor:hDBICur;eLock:
DBILockType;pRecBuff:Pointer;
precProps:pRECProps):DBIResult;
该函数用来取得当前记录的一些属性. 其
中, hCursor 可为数据集的 Handle, eLock 为对记录加锁
的类型, pRecBuff 存放记录的缓冲区, precProps
为记录属性集.
下面就是一个典型的例子. 同样, 应在 uses 语句加
上 DbiTypes, DbiProcs, DbiErrs.
{取得当前记录的记录号}
function RecNo(ADbfTable:TTable):LongInt;
var
RecordProps:RecProps;
begin
Result:=0;{返回0表示函数执行失败}
with ADbfTable do begin
{如果数据集处于非活动状态,则执行失败}
if not active then exit;
{使数据集的当前记录与实际的当前记录的位置一致}
UpdateCursorPos;
{取得当前记录的属性,主要是记录的位置}
if DBIERR_NONE<>
DbiGetRecord(Handle,dbiNOLOCK,nil,@RecordProps)
then exit;