如何使用进度列出订单开始日期前十位客户的订单成本/价格更高4gl

问题描述:

单个客户可能有多个订单和相应的成本。 现在必须添加成本/价格,并根据应显示客户的最高价格。 我刚刚写了编的骨架,请帮助我。如何使用进度列出订单开始日期前十位客户的订单成本/价格更高4gl

define temp-table ttorder 
    field ocust-num like order.cust-num 
    field oorder-num like order.order-num. 
    define variable i as int. 
    define variable a as int. 

    define temp-table ttorderln 
    field oprice like order-line.price. 

    for each order where order-date > 01/08/93 /*by cust-num*/ . 

     create ttorder . 
     assign 
     ttorder.ocust-num =cust-num 
     ttorder.oorder-num = order-num. 

    for each order-line where order-line.order-num = ttorder.oorder-num break by ocust-num. 

    i = order-line.price. 
    a = i + a. 
    /* display cust-num order-num a. */ 
    if last-of (ttorder.ocust-num) then 
     do: 


     create ttorderln. 
     ttorderln.oprice=a. 

     end. 

    display ttorderln. 

    end. 


    end. 
+0

这似乎并不像一个进展甚至是一个编程问题,而是一个算法/逻辑问题。我不确定这是否适合您提出这个问题。 必须添加成本/价格,是否应该显示订单总计?通过订单或只是最大? – bupereira

如果您正在寻找*客户,您应该使用基于客户的临时表格,而不是订单。通过订单和订单行,累积客户的金额。

define temp-table ttcust 
    field cust-num like order.cust-num 
    field order-tot as decimal 
    index idx1 cust-num 
    index idx2 order-tot. 

define variable i as integer. 

    for each order where order-date > 01/08/93: 

     /* Find or create a customer temp record. */ 
     find first ttcust where ttcust.cust-num = order.cust-num no-error. 
     if not available(ttcust) then 
     do: 
      create ttcust. 
      ttcust.cust-num = order.cust-num. 
     end. 

     /* Add up the order lines. */ 
     for each order-line where order-line.order-num = order.order-num no-lock: 
      ttcust.order-tot = ttcust.order-tot + order-line.extended-price. 
     end. 

    end. 

    /* Display the top 10. */ 
    for each ttcust by order-tot descending: 
    i = i + 1. 

     message "Cust: " ttcust.cust-num skip 
       "Total: " ttcust.order-tot view-as alert-box. 

    if i >= 10 then leave. 

    end. 
+0

谢谢编辑,汤姆。我看到我的原始答案已经循环遍历所有的记录,尽管只需要10个记录。 – TheDrooper