我可以使用 Progress Developer Studio for OpenEdge 的哪个工具来测试 ABL 查询?

Which tool of Progress Developer Studio for OpenEdge can I use for testing ABL queries?

我刚刚写了以下错误的 ABL 查询:

FOR EACH T1 (WHERE T1.some-date = ' ')  AND 
            (integer(T1.num1) >= 100) AND 
            (integer(T1.num1) <= 200) AND 
            (T1.some-other-date = 01/12/2021) AND 
            (T2.Name = itsme), 
    EACH T2 WHERE T2.num2 = T1.num2 
    BY T1.num1

如您所见,这是错误的,因为我将第一个括号放在“WHERE”前面而不是后面。最重要的是,我的名字“itsme”没有放在引号之间,所以 ABL 查询将永远无法工作。

我一直在寻找我的开发环境(“工具”菜单),但找不到 ABL 查询测试器。我还检查了目录“C:\Progressx86\OpenEdge\bin”,但作为新手我没有找到任何东西。

我已经下载了“DataDigger”应用程序,其中包含一个所谓的“MCF 查询测试器”,但这只适用于单个 table 并且只检查标准,而不是整个 ABL 查询。

有谁知道我在哪里可以找到 ABL 查询测试器,首先用于语法检查(“WHERE”前面的括号)和(如果可能)用于数据测试(01/12/2021,是 1 月12 号还是 12 月 1 号?)?

提前致谢
多米尼克

在 Progress Developer Studio 中为 Openedge 创建一个新的 OpenEdge 项目。在具有必要数据库连接的项目下创建一个新的 ABL 过程。将上面的 ABL 代码复制到程序文件中,您应该能够在程序文件中看到错误和警告。

您没有提到您使用的是哪个编辑器,但一般来说,ABL COMPILE 语句执行语法检查。 separate/independent 语法没有 separate/independent 可执行文件。一般需要写一个.P来进行编译。

如果您想使用基于 Ant 或 Gradle 的构建系统,您可以使用 PCTCompile Ant 任务。

关于日期格式,我以为在文档中,但没有。日期在硬编码时总是具有 MM/DD/YYYY 格式;硬编码时,小数始终使用 . 小数点分隔符(即 123.45)。

Progress Developer Studio 的 ABL Scratch Pad 视图允许执行临时查询。

https://knowledgebase.progress.com/articles/Knowledge/000055088

另一种测试您正在处理的查询的方法是使用接受字符串的查询准备。

DEFINE QUERY q-Test FOR T1, T2. 
QUERY q-test:HANDLE:QUERY-PREPARE("your query string here").

我的一位同事向我展示了一个令人难以置信的简单解决方案:

在单独的过程中复制查询 window 并添加您想要查看的结果,如下所示:

FOR EACH T1 (WHERE T1.some-date = ' ')  AND 
            (integer(T1.num1) >= 100) AND 
            (integer(T1.num1) <= 200) AND 
            (T1.some-other-date = 01/12/2021) AND 
            (T2.Name = itsme), 
    EACH T2 WHERE T2.num2 = T1.num2 
    BY T1.num1

/* To be added for viewing results */
DISPLAY T1.Field1 T1.Field2 T2.Field5
END.

并在编程环境中启动它 (F2)。
如果出现语法错误,编译器会显示错误。如果语法正确,将启动弹出窗口 window,显示结果。