Изчислете суми в интервал

Имам следния код от Navision

PrintLine := FALSE;
LineTotalVendAmountDue := 0;
FOR i := 1 TO 5 DO BEGIN
  DtldVendLedgEntry.SETCURRENTKEY("Vendor No.","Initial Entry Due Date");
  DtldVendLedgEntry.SETRANGE("Vendor No.","No.");
  DtldVendLedgEntry.SETRANGE("Initial Entry Due Date",PeriodStartDate[i],PeriodStartDate[i + 1] - 1);
  DtldVendLedgEntry.CALCSUMS("Amount (LCY)");
  VendBalanceDue[i] := DtldVendLedgEntry."Amount (LCY)";
  VendBalanceDueLCY[i] := DtldVendLedgEntry."Amount (LCY)";
  IF VendBalanceDue[i] <> 0 THEN
    PrintLine := TRUE;
  LineTotalVendAmountDue := LineTotalVendAmountDue + VendBalanceDueLCY[i];
  TotalVendAmtDueLCY := TotalVendAmtDueLCY + VendBalanceDueLCY[i];
END;

Трябва да преведа горния код на SQL server, но не мога да го разбера. Аз съм начинаещ в Navision.


person user3868796    schedule 04.09.2014    source източник
comment
Започнете с търсене на отделни инструкции в документацията на Navision. Знаете ли какво прави SECURRENTKEY? SETRANGE? Знаете ли към коя таблица се отнася променливата DtldVenLedgEntry? Ние сме тук, за да ви помогнем с конкретни въпроси, а не да ви свършим работата :)   -  person MeanGreen    schedule 04.09.2014


Отговори (1)


Трудно, ако дори е възможно да се преведе на SQL без контекст, но по същество:

За 5 интервала от дати (началната дата на всеки, посочен в PeriodStartDate масив) добавете:

SELECT SUM([Amount (LCY)]) 
FROM [Company$Detailed Vendor Ledg. Entry] 
WHERE [Vendor No.] = $1 -- particular Vendor No.
AND [Initial Entry Due Date] BETWEEN $2 and $3 -- period start/end, inclusive

LineTotalVendAmountDue е зададено на общо 5 интервала за конкретния доставчик.

TotalVendAmtDueLCY е настроен да отчита общ сбор (вероятно).

person Ivka    schedule 08.09.2014
comment
Заявката, както е описано по-горе, има грешка от таблицата; Подробна Cust. Ледж. Записът не съдържа номер на доставчик. Трябва да използвате: Подробна книга на доставчик. Вход - person gbierkens; 16.10.2014