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

如何用C/AL代码实现Bid Price LCY列当前值减前值?存在累加错误

问题解决:计算每日Bid Price LCY差值存入Daily Return(Offer)

你的代码因使用累加操作(LastDailyReturn += ...)导致结果为总和,而非预期的每日差值。要实现当前值减前一个值的逻辑,需保存上一条记录的Bid Price LCY,遍历每条记录时计算差值并写入目标列。

修正后的代码如下:

var
    LastBidPrice: Decimal;
    TempFundPriceNew: Record "Temp Fund Price New";
begin
    LastBidPrice := 0;
    TempFundPriceNew.RESET;
    TempFundPriceNew.SETCURRENTKEY("Fund No.", Date);
    TempFundPriceNew.SETRANGE(TempFundPriceNew."Fund No.", "Temp Fund Price New"."Fund No.");
    TempFundPriceNew.SETRANGE(TempFundPriceNew.Date, StartDate, "Temp Fund Price New".Date);
    
    IF TempFundPriceNew.FINDFIRST THEN BEGIN
        // 第一条记录无前置数据,日收益设为0(可根据业务需求调整)
        TempFundPriceNew."Daily Return(Offer)" := 0;
        TempFundPriceNew.MODIFY;
        LastBidPrice := TempFundPriceNew."Bid Price LCY";
        
        WHILE TempFundPriceNew.NEXT = 1 DO BEGIN
            // 当前值减前一个值得到日收益
            TempFundPriceNew."Daily Return(Offer)" := TempFundPriceNew."Bid Price LCY" - LastBidPrice;
            TempFundPriceNew.MODIFY;
            // 更新前值为当前值,供下一条计算使用
            LastBidPrice := TempFundPriceNew."Bid Price LCY";
        END;
    END;
end;

核心修改说明:

  • 新增LastBidPrice变量,专门存储上一条记录的Bid Price LCY值
  • 第一条记录无前置数据,日收益默认设为0(若业务有其他规则可自行调整)
  • 遍历后续记录时,用当前Bid Price减去LastBidPrice得到差值,写入Daily Return(Offer)列
  • 每次遍历完成后更新LastBidPrice为当前值,保证下一次计算的准确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:48