我需要使用外部程序或过程更新程序a.p中的字段。但我做不到。这是a.p:的例子
DEF VAR v1 AS CHAR.
DEF VAR v2 AS CHAR.
DEF VAR v3 AS CHAR.
DEF VAR v4 AS CHAR.
DEF VAR external_program AS CHAR INITIAL 'myexternalprogram.p'.
FORM
v1
v2
v3
v4
WITH FRAME f1.
ON F2 OF v1 IN FRAME f1
DO:
RUN VALUE(external_program) .
END.
REPEAT:
UPDATE
v1
v2
v3
v4
WITH FRAME f1.
END.
=========================================
myexternalprogram.p :
INPUT FROM VALUE(txt_with_data).
如果我使用内部程序是非常容易的。但我需要使用外部。而且我不能修改程序a.p。我试了一些把手,但失败了。。。
我开始想,这有可能吗?
谢谢你的回答。
当我使用:
MESSAGE PROGRAM-NAME(2) VIEW-AS ALERT-BOX.
MESSAGE SELF:NAME VIEW-AS ALERT-BOX.
SELF:SCREEN-VALUE = 'w1'.
APPLY "ENTER" TO SELF.
我可以跳到另一个领域,但在程序结束时。我怎么能用类似的代码跳过我所有的字段,知道帧和字段名?
您可以通过运行批处理会话来重定向stdin:
mbpro-db dbname-p程序。p<输入文件
或者,使用ENTRY事件获取当前字段,检查所需字段的PROGRAM-NAME()和SELF:NAME值,并根据需要修改SELF:SCREEN-VALUE。
要更新框架中的其他字段,请使用小部件句柄PREV-SIBLING和小部件句柄NEXT-SIBLING来遍历框架的小部件树。