如何从进行中的db 4gl中获取值,最初有来自用户的输入,以根据记录将显示的值选择记录。我们尝试了但我们无法获取确切的值。
这是我们的计划:
def var b as int.
def var obj as int.
/*set obj.
prompt-for obj.*/
def var sum as int.
def var a as int no-undo.
def var i as int no-undo.
for each po_mstr break by po_nbr.
select count (*) from po_mstr.
assign
a = 1
b = 583 .
repeat:
if first-of (po_nbr) then
set obj.
prompt-for obj.
if (a le obj and obj lt b) then
disp po_nbr po_vend po_ship po_ord_date with 2 col.
end.
end.
只有当我们提供的值超过2时才能检索单个数据意味着它将显示相同的第一个值。
答案 0 :(得分:0)
让我们打破这个。你使用了很多命令而没有真正意识到它们的用途。
FOR EACH打开一个块并按所选的排序顺序对每个循环执行记录读取(如果没有选择,则使用主索引)。
SELECT将执行数据库操作,不一定要动态执行,但可能会。
REPEAT还将打开一个块,您可能会或可能不会使用其他命令循环记录。话虽如此,这就是我写这个的方式:
{{1}}我采取了一些自由。我删除了obj,因为据我所知,你试图将po_nbr值复制到它,然后用它来查看它是否在你想看的范围内。因为我相信po_nbr代表po数,这可能是唯一的,我也猜测每次迭代都会有不同的值。因此,如果是第一个,则无需使用。它还消除了将其复制到变量的需要。只需将它直接与您想要看到的po的范围进行比较。最后,显示应该没问题。
我将继续并假设您的团队尚未接受过培训。这将是非常重要的,因为QAD(事实上任何ERP软件)都会膨胀真正快速且编写错误的代码,即使在无害的情况下也可能影响性能和可用性,这可能是整个操作的一个问题。 Stack Overflow可能对准时问题有所帮助,但是如果你没有准备就会遇到的问题可能无法在这里解决。
希望这会有所帮助。