我可以使用 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,显示结果。
我刚刚写了以下错误的 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,显示结果。