You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅循环页面中从选中行到最后一行的记录?

解决方案

要实现仅循环页面显示范围内从选中行到最后一行的记录,核心是让循环的记录对象继承页面的筛选、排序规则,或者针对分页场景获取当前页的记录集合,以下分两种场景处理:

场景1:循环页面筛选后的所有记录(从选中行到最后一行)

你的代码未应用页面的筛选逻辑,导致遍历了全表记录。通过复制页面视图并定位到选中记录,即可实现目标范围的循环:

var
    ProdOrderLine: Record "Production Order Line";
begin
    // 复制当前页面的筛选条件与排序规则到目标记录
    ProdOrderLine.CopyView(Rec);
    // 根据选中记录的主键定位到目标行(需根据你的表结构调整主键字段)
    if ProdOrderLine.Get(Rec."No.", Rec."Line No.") then begin
        REPEAT
            // 在此添加对每条记录的处理逻辑
            Message('正在处理生产订单行:%1', ProdOrderLine."Line No.");
        UNTIL ProdOrderLine.NEXT = 0;
    end;
end;

关键说明

  • CopyView(Rec):将页面的筛选条件、排序方式完全同步到ProdOrderLine,确保循环范围与页面显示的记录一致。
  • Get(...):通过选中记录的主键字段定位到起始行,保证循环从选中行开始。
  • REPEAT...UNTIL:按页面排序规则向后遍历所有符合筛选的记录,直到最后一行。

场景2:仅循环当前分页内从选中行到末尾的记录

如果你的页面是分页显示,且只需要处理当前分页内的后续记录,可通过页面的记录ID集合实现:

var
    CurrentPage: Page "Production Order Lines"; // 替换为你的页面名称/ID
    ProdOrderLine: Record "Production Order Line";
    RecordIds: List of RecordId;
    startIndex: Integer;
begin
    CurrentPage := CurrPage;
    // 获取当前分页所有记录的ID列表
    CurrentPage.GetRecordIds(RecordIds);
    // 找到选中记录在列表中的起始索引
    startIndex := RecordIds.IndexOf(Rec.RecordId);
    
    if startIndex <> 0 then begin
        // 从选中行的索引开始遍历到分页末尾
        for startIndex from startIndex to RecordIds.Count do begin
            ProdOrderLine.Get(RecordIds.Get(startIndex));
            // 添加你的处理逻辑
            Message('处理当前分页记录:%1', ProdOrderLine."Line No.");
        end;
    end;
end;

关键说明

  • GetRecordIds:获取当前分页显示的所有记录ID,仅包含页面当前可见的行。
  • IndexOf:定位选中记录在分页列表中的位置,确保从选中行开始遍历。

内容的提问来源于stack exchange,提问作者kuhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:10:45