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

问题描述

我正在使用 AppBuilder,OpenEdge Progress 版本 11.6 中的过程编辑器。

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

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

提前致谢

解决方法

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

enter image description here

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

然后导航到 Name 属性

enter image description here

,

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

右击对象,选择数据视图 enter image description here

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

enter image description here

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

enter image description here

现在您可以看到按顺序排列的名称

enter image description here

用于此目的的演示程序:

public class ExampleClass
{
    // DelegateNames = NameOfObject + Verb + ("ed" or "ing") + "Handler".
    // NameOfObject  = Data,File,Property,Value,Window,Settings,User,...
    // Verb          = Open,Close,Format,Clear,Delete,Create,Insert,Update,Refresh,Dispose,Sort,...
    public delegate void SomethingHappenedHandler(object pSender,object pWhat);
    public delegate void SomeValueChangedHandler(object pSender,object pWhat,object pOldValue,object pNewValue);
    public delegate void SomethingFinishedHandler(object pSender);
    public delegate void SomethingInvokedHandler();

    // EventNames = DelegateName - "Handler".
    public event SomethingHappenedHandler SomethingHappened;
    public event SomeValueChangedHandler SomeValueChanged;
    public event SomethingFinishedHandler SomethingFinished;
    public event SomethingInvokedHandler SomethingInvoked;

    // EventHandlingMethodNames = "On" + EventName.
    private void OnSomethingHappened(object pSender,object pWhat) { /* Code...*/ }
    private void OnSomeValueChanged(object pSender,object pNewValue) { /* Code...*/ }
    private void OnSomethingFinished(object pSender) { /* Code...*/ }
    private void OnSomethingInvoked() { /* Code...*/ }

    // EventInvokingMethods = ("Fire" | "Notify" | "Invoke") + EventName.
    private void FireSomethingHappened(object pSender,object pWhat) { /* SomethingHappened?.Invoke(...); */ }
    private void NotifySomeValueChanged(object pSender,object pNewValue) { /* SomeValueChanged?.Invoke(...); */ }
    private void InvokeSomethingFinished(object pSender) { /* SomethingFinished?.Invoke(...); */ }
    private void NotifySomethingInvoked() { /* SomethingInvoked?.Invoke(...); */ }
}