我有一个4gl rest webservice进度。 Create方法接受一个数据集,从该数据集中提取其基础临时表
METHOD PUBLIC VOID Createprices(INPUT-OUTPUT DATASET dsprices):
DEFINE VARIABLE hT AS HANDLE.
ht = DATASET dsprices:GET-BUFFER-HANDLE(TEMP-TABLE ttprices:NAME).
ht = ht:DEFAULT-BUFFER-HANDLE.
PreTransactionValidate(INPUT-OUTPUT TABLE-HANDLE ht).
然后我将临时表缓冲区传递给另一个方法(pretransactionvalidate),在该方法中我计算几个字段的值。 分配了伪值的PretransactionValidate方法-
METHOD PUBLIC VOID PreTransactionValidate( INPUT-OUTPUT table-handle ttprices):
FOR EACH ttprices:
ASSIGN
ttprices.PricesId = NEXT-VALUE(SeqPricesId)
ttprices.AddedDate = TODAY
ttprices.AddedTime = TIME.
END.
调用PretransactionValidate方法会导致我的Create方法失败。如果我注释掉该呼叫,则可以成功创建一条记录。我是Progress新手,在网上找不到很多资料,所以任何帮助都值得尝试。
欢呼
答案 0 :(得分:1)
在您的Createprices方法中,将ht分配给缓冲区的句柄,但是过程PreTransactionValidate需要一个数据集句柄。
由于这两种方法都在同一个编译单元(类)中,因此无论如何都不需要将temp-table作为参数传递。不幸的是,临时表在ABL中始终是全局类。
如果两种方法都位于不同的编译单元中,则可以直接传递temp-table:
<some_object_reference>:PreTransactionValidate (INPUT-OUTPUT TABLE ttprices).