ProDataObject作为INPUT PARAMETER Java


大魔王
2025-03-18 08:38:33 (18天前)


我有一张名为Car的进度表。我需要让我的进度代码获取一个Car实例的输入参数。

我试过这个

DEFINE INPUT PARAMETER i_tuPDO作为汽车。
但这会导致……

3 条回复
  1. 0# !啊啊 | 2019-08-31 10-32



    您不能使用单个记录作为输入。您可以定义与“汽车”记录相关的对象并输入该对象。另一种选择是输入相应的BUFFER-HANDLE。




    1. DEFINE TEMP-TABLE tt NO-UNDO
      FIELD a AS CHARACTER.

    2. CREATE tt.
      ASSIGN tt.a = HELLO”.

    3. RUN proc (INPUT BUFFER tt:HANDLE).

    4. PROCEDURE proc:
      DEFINE INPUT PARAMETER phBuffer AS HANDLE NO-UNDO.

    5. MESSAGE phBuffer:BUFFER-FIELD(1):BUFFER-VALUE VIEW-AS ALERT-BOX.
    6. END.

    7. </code>


    如果您真正想要的是将DATASET输入到可以这样做的过程(或程序)中:




    1. DEFINE TEMP-TABLE tt NO-UNDO
      FIELD a AS CHARACTER.

    2. DEFINE DATASET ds FOR tt.

    3. CREATE tt.
      ASSIGN tt.a = HELLO”.

    4. RELEASE tt.

    5. RUN proc (INPUT DATASET ds).

    6. PROCEDURE proc:
      DEFINE INPUT PARAMETER DATASET FOR ds.

    7. FIND FIRST tt NO-ERROR.
    8. IF AVAILABLE tt THEN 
    9.     DISPLAY tt.
    10. END.

    11. </code>

  2. 1# 别闹 | 2019-08-31 10-32



    我不完全确定你要做什么。如果你想传递表Car的特定记录,你可以传递加载缓冲区并传递它或传递缓冲区的rowid。例:




    1. PROCEDURE test1 :

    2. define parameter buffer pbCar for Car.

    3. END procedure.

    4. PROCEDURE test2 :

    5. define input parameter rCar as rowid no-undo.
      define buffer bCar for Car.

    6. find bCar
      where rowid(bCar) = rCar
      no-lock.

    7. END procedure.

    8. find first Car no-lock.

    9. run test1 ( buffer Car ).

    10. run test2 ( rowid(Car) ).

    11. </code>

登录 后才能参与评论