delphi – 为什么设置表的RecNo属性不会移动到该记录?
发布时间:2020-12-15 04:31:19 所属栏目:大数据 来源:网络整理
导读:我有一个使用BDE访问DBase表的TTable组件.表上没有索引,因此排序顺序是表中记录的物理顺序.如果我读取RecNo属性,它包含当前记录的预期编号. 我的印象是,使用这个星座(BDE DBase),也可以将RecNo属性设置为移动到相应的记录.但显然这在我的计划中不起作用. 所
我有一个使用BDE访问DBase表的TTable组件.表上没有索引,因此排序顺序是表中记录的物理顺序.如果我读取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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |