ProDataObject作为INPUT PARAMETER Java

时间:2019-01-09 13:40:49

标签: openedge progress-4gl

我有一个名为Car的Progress表。我需要让进度代码采用一个Car实例的输入参数。

我已经尝试过了

DEFINE INPUT PARAMETER i_tuPDO AS Car.

但这会导致编译器错误。

2 个答案:

答案 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) ).