标签: openedge

未确定的参数数量

不知何故, System.String:Format 存在但似乎不起作用。

DEFINE VARIABLE strValue AS CHARACTER NO-UNDO.
strValue = "Sebastien".
MESSAGE System.String:Format("Hello {0}", strValue) VIEW-AS ALERT-BOX.
Run Code Online (Sandbox Code Playgroud)

结果是“Hello C:\temp\run.p”而不是“Hello Sebastien”。

所以我决定创建一个等效的函数。

如何声明具有不确定数量参数的方法?

例子:

METHOD PUBLIC INTEGER Calculate(
    INPUT iMultiply AS INTEGER
    ,INPUT iInt1 AS INTEGER
    ,INPUT iInt2 AS INTEGER
    ...
    ,INPUT iIntX AS INTEGER):

    RETURN iMultiply * (iInt1 + iInt2, ..., iIntX).

END METHOD.

DISPLAY Calculate(10, 1, 2, 3). /* Result: 60 */
DISPLAY Calculate(2, 1, 1, 1, 1, 1). /* Result: 10 */
Run Code Online (Sandbox Code Playgroud)

谢谢!塞巴斯蒂安

progress-4gl openedge

1
推荐指数
1
解决办法
1245
查看次数

Progress-4gl:事务范围如何应用于外部程序调用?

我需要一些帮助来理解当前程序之外的程序/程序的事务范围。

假设我有三个程序,程序 A、程序 B 和程序 C。在程序 A 中,我有一个过程,其中有一些行包含在do transaction(非强类型)块中。在那个do transaction块中,它调用另一个程序 B。从程序 B 返回时,有一个撤消,离开命令。在同一个事务块内,它调用程序C并有一个undo,在这个调用之后也离开。

我的问题是,如果在事务块内,程序 B 执行没有错误,但程序 c 返回错误,那么程序 C 调用后的 undo,leave 是否也会撤销程序 B 内部发生的事务?

Procedure do_something:
  some processing....
  do transaction:
    error-message = "".
    {run programB.p}
    if error-message <> "" then undo, leave.
  
    some further processing...
  
    error-message = "".
    {run programC.p}
    if error-message <> "" then undo, leave.
  end. /* end of do transaction */
end procedure.
Run Code Online (Sandbox Code Playgroud)

progress-4gl openedge

1
推荐指数
1
解决办法
251
查看次数

W 文件、P 文件和 I 文件的含义是什么?

我正在 Progress Release 11.6 中使用 appBuilder 和过程编辑器。

正如前面的一些问题中提到的,我经常遇到 appBuilder 的问题,不想打开文件,损坏它们(删除部分源代码),......,现在的原因之一似乎是程序的限制不能超过32K,包含评论。

起初我想“我们回到了石器时代吗? ”,请原谅我的反应。

但现在我开始认为我们完全滥用了整个概念,因此我想表达我对W文件、P文件和I文件的看法,请确认(或更正):

W 文件仅包含 GUI 定义,例如带有一些框架、按钮、填充字段等的表单,任何真正的编程都需要在 P 文件中完成。
P 文件包含真正的智能:其中详细说明了程序和功能,可以由其余 P 文件使用,或者最终由 W 文件使用。
I 文件只是用来包含一般行为。

让我举一个例子:

W 文件:

DEFINE VARIABLE combo_information VIEW-AS COMBOBOX /* with some information on the content, if this is static */
...
ON CHOOSE OF combo_information DO:
  RUN very_large_procedure.
END.
...
{about.i} /* see here-after */
...
Run Code Online (Sandbox Code Playgroud)

P 文件:

PROCEDURE very_large_procedure:
DO /* a lot */
END.
Run Code Online (Sandbox Code Playgroud)

I 文件(about.i):

/* Describes the help-about …
Run Code Online (Sandbox Code Playgroud)

progress-4gl language-concepts openedge

1
推荐指数
1
解决办法
671
查看次数

如果临时表的字段数据类型类似于表名 - Progress 4GL,如何从临时表获取标签?

我是 4GL 的新手。我总是使用下面的查询将临时表中的数据导出为 .csv 文件。为了给出标题标签,我进行了硬编码。是否可以从临时表字段本身获取标签?如果是,请帮助我修改查询。

DEFINE TEMP-TABLE ttdata NO-UNDO
FIELD cCustomerName LIKE Customer.NAME
FIELD cAddress      LIKE Customer.Address
.

OUTPUT TO VALUE(SESSION:TEMP-DIRECTORY + "temp.csv").

 PUT UNFORMATTED "customer Name,Customer Address" SKIP.

 FOR EACH ttdata NO-LOCK:
    EXPORT DELIMITER "," ttdata.
 END.

OUTPUT CLOSE.
Run Code Online (Sandbox Code Playgroud)

progress-4gl openedge

1
推荐指数
1
解决办法
531
查看次数

是否可以更改srt文件的增长路径?- 进步4GL

我在实际耗尽磁盘的地方遇到以下错误。这是因为为 srt 文件生成分配的空间不够。所以我们决定改变空间巨大的路径。是否可以通过程序改变它?

系统错误:写入中出现 I/O 错误 0,ret 2048,文件 56(/mfgtmp/tmp/srtE5yybD),地址 77010944。(290)

progress-4gl openedge

1
推荐指数
1
解决办法
42
查看次数

Openedge:Open Query 中的 If..then 条件 - 性能问题

open query q for each notepad no-lock where notepad.ctrl-code = pCode and (if pE-num = 0 then notepad.k-num = pk-num else notepad.e-num =  pe-num)
Run Code Online (Sandbox Code Playgroud)

我的问题是 - where 子句中的 if 条件会导致查询运行缓慢吗?

progress-4gl openedge

1
推荐指数
2
解决办法
134
查看次数

打开Edge Progress数据库更新查询

我是 Open Edge Progress 数据库的初学者。

是否有任何查询来更新/插入数据到进度数据库表中

我的尝试是

ASSIGN
  TABLE.COLUMN=DATA
END
Run Code Online (Sandbox Code Playgroud)

它是否正确?

database insert-update progress-4gl openedge

1
推荐指数
1
解决办法
141
查看次数

4GL Progress/opensge千分离

我想为这个值做千分之一100000000.我该怎么做呢?

示例代码

DEFINE VARIABLE mAmount AS DECIMAL  NO-UNDO.
ASSIGN mAmount = 100000000.
MESSAGE mAmount VIEW-AS ALERT-BOX INFO BUTTONS OK TITLE "Amount".
Run Code Online (Sandbox Code Playgroud)

progress-4gl openedge

0
推荐指数
1
解决办法
101
查看次数

UPDATE变量和OUTPUT TO文件路径

我试图让用户插入文件路径,然后将结果输出到该文件路径:

DEFINE VARIABLE outputPath AS CHARACTER FORMAT "x(50)".

UPDATE outputPath.
OUTPUT TO outputPath.
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.但是,当我这样做时:

OUTPUT TO "C:\temp\test.txt".
Run Code Online (Sandbox Code Playgroud)

它似乎工作.

progress-4gl openedge

0
推荐指数
1
解决办法
79
查看次数

如何给临时表中的整数字段空白值?

我写了一个简单的查询,但想在临时表中将空白值显示为整数字段。如您所知,如果整数字段中没有数据,则默认值为0,但我们的客户表示应为空,而不是默认值0。

DEFINE TEMP-TABLE tt_data
       FIELD CarColour AS CHARACTER
       FIELD Qty  AS INTEGER.

FOR EACH <db> NO-LOCK WHERE <db.field> = "White Car" AND <db.field> = "Red Car":
         DISPLAY <db.field1> <db.field2>.
END.

/* Note  <db.field1> is CHARACTER  <db.field2> is INTEGER */

/* DISPLAYED VALUE IS */

WHITE    0  /* There is no qty for this white car so its showing default value 0 */

RED     100

Run Code Online (Sandbox Code Playgroud)

因此,当我将这些数据存储到临时表时,白色汽车数量应为空白而不是0。

注意-我无法更改“临时表”字段类型。

progress-4gl openedge

0
推荐指数
1
解决办法
61
查看次数