gpt4 book ai didi

delphi - 为什么设置表的 RecNo 属性不会移动到该记录?

转载 作者:行者123 更新时间:2023-12-03 14:59:38 26 4
gpt4 key购买 nike

我有一个 TTable 组件,它使用 BDE 访问 DBase 表。表上没有索引,因此排序顺序是表中记录的物理顺序。如果我读取 RecNo 属性,它包含当前记录的预期编号。

我的印象是,通过这个星座(BDE + DBase),还可以设置 RecNo 属性以移动到相应的记录。但显然这在我的程序中不起作用。

那么:我是不是记错了?或者我需要做什么特殊的事情才能使其发挥作用?

(请不要建议放弃 BDE。我知道它的问题,并且我们已经在迁移它。)

最佳答案

TBDEDataSet 仅针对 Paradox(而非 DBase)实现 RecNo setter。

unit DBTables;
...
procedure TBDEDataSet.SetRecNo(Value: Integer);
begin
CheckBrowseMode;
if (FRecNoStatus = rnParadox) and (Value <> RecNo) then
begin
DoBeforeScroll;
if DbiSetToSeqNo(Handle, Value) = DBIERR_NONE then
begin
Resync([rmCenter]);
DoAfterScroll;
end;
end;
end;

您可能想尝试像这样的通用方法:

procedure SetRecNo(DataSet: TDataSet; const RecNo: Integer);
var
ActiveRecNo, Distance: Integer;
begin
if (RecNo > 0) then
begin
ActiveRecNo := DataSet.RecNo;
if (RecNo <> ActiveRecNo) then
begin
DataSet.DisableControls;
try
Distance := RecNo - ActiveRecNo;
DataSet.MoveBy(Distance);
finally
DataSet.EnableControls;
end;
end;
end;
end;

关于delphi - 为什么设置表的 RecNo 属性不会移动到该记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com