我有一个名为Car
的Progress表。我需要让进度代码采用一个Car
实例的输入参数。
我已经尝试过了
DEFINE INPUT PARAMETER i_tuPDO AS Car.
但这会导致编译器错误。
答案 0 :(得分:2)
您不能使用单个记录作为输入。您可以定义与“汽车”记录相关的对象,然后输入该对象。另一种选择是输入相应的BUFFER-HANDLE。
DEFINE TEMP-TABLE tt NO-UNDO
FIELD a AS CHARACTER.
CREATE tt.
ASSIGN tt.a = "HELLO".
RUN proc (INPUT BUFFER tt:HANDLE).
PROCEDURE proc:
DEFINE INPUT PARAMETER phBuffer AS HANDLE NO-UNDO.
MESSAGE phBuffer:BUFFER-FIELD(1):BUFFER-VALUE VIEW-AS ALERT-BOX.
END.
如果您真正想要的是将DATASET输入到可以执行以下操作的过程(或程序)中:
DEFINE TEMP-TABLE tt NO-UNDO
FIELD a AS CHARACTER.
DEFINE DATASET ds FOR tt.
CREATE tt.
ASSIGN tt.a = "HELLO".
RELEASE tt.
RUN proc (INPUT DATASET ds).
PROCEDURE proc:
DEFINE INPUT PARAMETER DATASET FOR ds.
FIND FIRST tt NO-ERROR.
IF AVAILABLE tt THEN
DISPLAY tt.
END.
答案 1 :(得分:1)
我不确定您要做什么。如果要传递表Car的特定记录,则可以传递负载并传递它,或者传递缓冲区的rowid。示例:
PROCEDURE test1 :
define parameter buffer pbCar for Car.
END procedure.
PROCEDURE test2 :
define input parameter rCar as rowid no-undo.
define buffer bCar for Car.
find bCar
where rowid(bCar) = rCar
no-lock.
END procedure.
find first Car no-lock.
run test1 ( buffer Car ).
run test2 ( rowid(Car) ).