如何从进行中的数据库4gl中检索数据?

时间:2017-07-07 10:35:22

标签: openedge progress-4gl

如何从进行中的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时才能检索单个数据意味着它将显示相同的第一个值。

1 个答案:

答案 0 :(得分:0)

让我们打破这个。你使用了很多命令而没有真正意识到它们的用途。

FOR EACH打开一个块并按所选的排序顺序对每个循环执行记录读取(如果没有选择,则使用主索引)。

SELECT将执行数据库操作,不一定要动态执行,但可能会。

REPEAT还将打开一个块,您可能会或可能不会使用其他命令循环记录。话虽如此,这就是我写这个的方式:

{{1}}
我采取了一些自由。我删除了obj,因为据我所知,你试图将po_nbr值复制到它,然后用它来查看它是否在你想看的范围内。因为我相信po_nbr代表po数,这可能是唯一的,我也猜测每次迭代都会有不同的值。因此,如果是第一个,则无需使用。它还消除了将其复制到变量的需要。只需将它直接与您想要看到的po的范围进行比较。最后,显示应该没问题。

我将继续并假设您的团队尚未接受过培训。这将是非常重要的,因为QAD(事实上任何ERP软件)都会膨胀真正快速且编写错误的代码,即使在无害的情况下也可能影响性能和可用性,这可能是整个操作的一个问题。 Stack Overflow可能对准时问题有所帮助,但是如果你没有准备就会遇到的问题可能无法在这里解决。

希望这会有所帮助。