我需要使用外部程序或程序更新程序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.
我可以跳到另一个领域,但在程序结束时。 我怎么能用类似的代码跳过我所有的领域知道帧和字段名称?
答案 0 :(得分:1)
您可以通过运行批处理会话来重定向stdin:
mbpro -db dbname -p program.p< input.file
或者,使用ENTRY事件获取当前字段,检查所需字段的PROGRAM-NAME()和SELF:NAME值,并根据需要修改SELF:SCREEN-VALUE。
要更新框架中的其他字段,请使用widget-handle:PREV-SIBLING和widget-handle:NEXT-SIBLING以遍历框架的窗口小部件树。