如何使用 OpenEdge 调试器比较查询文本和缓冲区列表?

How to compare query text and list of buffers, using OpenEdge debugger?

我正在使用 OpenEdge Progress 11.6 版的程序编辑器 appBuilder。

最近我也开始使用 OpenEdge Debugger,也是 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

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

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

然后 select MemberBuffer(1) 并单击查看按钮。

然后导航到名称 属性

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

右键单击对象,select数据视图

单击每个 MemberBuffer。点击“查看”

Select 命名并点击“添加手表”

现在您可以按顺序查看姓名了

用于此目的的演示程序:

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") .