База данных Progress 4GL - математический расчет для файла экспорта

Следующие ниже инструкции будут выполнены. Однако мне нужно разделить wShipment.Volume на 1728 и экспортировать этот результат.

Например, если wShipment.Volume - 3456, то результат 2 должен быть экспортирован в отчет.

OUTPUT TO \\tsclient\U\All_Orders_item.csv.

FOR EACH r4_wms.wShipmentDet NO-LOCK,

FIRST r4_wms.wShipment OF r4_wms.wShipmentDet NO-LOCK where wShipment.shipmentNO>6500 and wShipmentDet.Owner="MIDEAUS",

FIRST r4_wms.wOrder OF r4_wms.wShipmentDet NO-LOCK,

FIRST r4_wms.wOrderline OF r4_wms.wShipmentDet NO-LOCK
 BY wShipment.ShipmentNo DESC:

EXPORT DELIMITER ","

           wOrder.OrderNo

           wShipment.Volume

           wShipment.Weight SKIP.   

 END.

 OUTPUT CLOSE. 

person Joe    schedule 21.12.2017    source источник
comment
Вы действительно не должны использовать имена файлов без кавычек - да, это работает, но это ошибка, ожидающая своего появления. Вы также играете с огнём с предложениями FIRST и OF в FOR EACH.   -  person Tom Bascom    schedule 01.01.2018


Ответы (1)


Если вы просто хотите разделить на 1728, вы можете сделать это прямо в операторе EXPORT:

wShipment.Volume / 1728

Но это "1728" звучит так, будто вы ищете кубические футы (12 x 12 x 12). Если вам нужно минимальное целое число кубических футов для объема, вы можете рассчитать это следующим образом:

DEFINE VARIABLE RoundedVol AS INTEGER NO-UNDO.

RoundedVol = TRUNCATE(wShipment.Volume / 1728, 0).
IF wShipment.Volume MOD 1728 > 0 THEN 
    RoundedVol = RoundedVol + 1.

Затем добавьте RoundedVol в оператор EXPORT. Это даст вам кубические футы, округленные в большую сторону для любой дроби. Таким образом, для тома 1729 вы получите 2.

person TheDrooper    schedule 21.12.2017