【问题标题】:OpenEdge 4GL REST Service : computing temp table values creating errorsOpenEdge 4GL REST 服务:计算临时表值会产生错误
【发布时间】:2019-01-22 03:04:28
【问题描述】:

我有一个进步的 4gl 休息网络服务。 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 新手,在网上找不到太多资料,所以任何帮助都值得一试。

干杯

【问题讨论】:

  • 请提供有关您收到的错误的最详细信息...
  • 嗨,迈克,我已经设法解决了错误,但是在 pretransactionvalidate 中分配的值在我调用时没有被保存:SUPER:CreateData(INPUT-OUTPUT DATASET-HANDLE hDataSet)。在 Createprices 中。但是,如果我执行以下操作:CREATE ttNewPrices. FOR EACH ttprices EXCLUSIVE-LOCK: BUFFER-COPY ttprices TO ttNewPrice. END. BUFFER-COPY ttNewPrice TO prices. 正在保存更新的值。
  • Bot 确定,额外的临时表 ttNewPrice 来自哪里。下次,我建议您发布更多相关代码:-)

标签: openedge progress-4gl


【解决方案1】:

在您的 Createprices 方法中,ht 被分配给缓冲区的句柄,但您的过程 PreTransactionValidate 需要一个数据集句柄。

由于这两种方法都在同一个编译单元(类)中,因此不需要将临时表作为参数传递。临时表(不幸的是)在 ABL 中总是类全局的。

如果两种方法都在不同的编译单元中,你可以直接传递临时表:

<some_object_reference>:PreTransactionValidate (INPUT-OUTPUT TABLE ttprices).

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 2017-07-18
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多