【问题标题】:How to compare query text and list of buffers, using OpenEdge debugger?如何使用 OpenEdge 调试器比较查询文本和缓冲区列表?
【发布时间】:2021-05-24 13:12:58
【问题描述】:

我正在使用来自 OpenEdge Progress 版本 11.6 的过程编辑器 appBuilder。

最近我也开始使用 OpenEdge 调试器,也是 11.6 版。

我对以下几行源代码有一些麻烦:

txt_Query = "FOR EACH Table1, ...".
...
handle_Query:SET-BUFFERS ("Table1", "Table2", ...).
...
handle_Query:QUERY-PREPARE(txt_Query).

问题由错误消息7326表示,提到缓冲区的顺序错误。

这意味着txt_Queryhandle_Query:SET-BUFFERS()中提到的表格顺序不同。

我想使用调试器检查当前的顺序,但这是一个相当大的负担,因为在数据视图中查看handle_Query 时,我看不到缓冲区的名称,但我看到了一些东西喜欢:

MemberBuffer(1) 1063
MemberBuffer(2) 1064
MemberBuffer(3) 1065
MemberBuffer(4) 1066
MemberBuffer(5) 1067

有人知道如何(轻松)查看此内容吗?

【问题讨论】:

    标签: openedge progress-4gl


    【解决方案1】:

    获得查询句柄值后,右键单击选定的数据视图。

    然后选择 MemberBuffer(1) 并点击查看按钮。

    然后导航到 Name 属性

    【讨论】:

    • 非常感谢您的快速回复(再次)。我已经解决了这个问题,将hQuery:MemberBuffer(1):NAME 添加到监视列表中,不仅针对数字 1,而且针对 1-12(我最多有 11 个缓冲区)。结果,第 12 个总是给出“不可用”,这让我可以比较其他缓冲区。
    【解决方案2】:

    您真的应该考虑迁移到 Developer Studio。这会让你的生活更轻松。

    右击对象,选择Dataview

    单击每个成员缓冲区。点击“查看”

    选择名称并点击“添加手表”

    现在您可以按顺序查看名称

    为此目的的演示程序:

    DISPLAY "running".
    
    DEFINE TEMP-TABLE tt NO-UNDO 
    FIELD a AS INTEGER .
    
    DEFINE TEMP-TABLE tt2 NO-UNDO 
    FIELD a AS INTEGER.
    
    DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
    
    CREATE QUERY hQuery.
    
    hQuery:SET-BUFFERS(BUFFER tt:HANDLE , BUFFER tt2:HANDLE).
    
    READKEY.
    
    // Error here...
    hQuery:QUERY-PREPARE("for each tt2, each tt") .
    

    【讨论】:

    • 虽然你的回答很有用,但升级到工作室并不能解决我的问题,因为要放在监视窗口中的项目与常规调试器中的项目相同(但有很多升级到工作室 IDE 的其他原因 :-) )。
    • @Dominique 同意!这不是搬家的主要原因!
    猜你喜欢
    • 2020-02-14
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多