如何使用进度列出订单开始日期前十位客户的订单成本/价格更高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.
答
如果您正在寻找*客户,您应该使用基于客户的临时表格,而不是订单。通过订单和订单行,累积客户的金额。
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
这似乎并不像一个进展甚至是一个编程问题,而是一个算法/逻辑问题。我不确定这是否适合您提出这个问题。 必须添加成本/价格,是否应该显示订单总计?通过订单或只是最大? – bupereira