【问题标题】:Field <field-name> from <file-name> record (recid <RECID>) was missing from FIELDS phrase. 8826FIELDS 短语中缺少来自 <file-name> 记录 (recid <RECID>) 的字段 <field-name>。 8826
【发布时间】:2021-11-03 11:48:45
【问题描述】:

对于某些记录,我收到此错误。我阅读了知识库的所有文章,但对我没有任何帮助。 当我将本地源连接到远程数据库时,一切都很好,如果我使用终端服务器(Citrix),则消息始终以相同的记录出现。这是一个没有字段/除了语句的动态查询。 记录的所有字段都正确填写。 有人有想法还有什么可能导致这个错误?

我使用 Progress 版本 11.4,我也尝试过 11.7。

【问题讨论】:

  • 请使用您的 Progress 版本和无效的知识库文章链接更新您的问题。

标签: openedge progress-4gl


【解决方案1】:

我现在可以在本地机器上重现该错误。

三件事必须结合在一起,

-带有 FIRST-OF 语句的查询,

-NO-ERROR 的任何错误

-在FIRST-OF的同一张表上用fields语句调用函数

DEFINE BUFFER b_table FOR table123.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.

FUNCTION get_values RETURNS CHARACTER (
    INPUT id_ AS INTEGER,
    INPUT field_    AS CHARACTER,
    INPUT dat_  AS DATE
    )
    :
    DEFINE VARIABLE return_ AS CHARACTER NO-UNDO INIT ?.
    DEFINE BUFFER c_table FOR table123.
    
    FOR FIRST c_table FIELDS (wert)
        USE-INDEX abc
        NO-LOCK:
        return_ = c_table.wert.
    END.
    
    RETURN return_.
END FUNCTION. 


FOR EACH b_table  USE-INDEX abc  NO-LOCK  BREAK BY b_table.a_id BY b_table.b_id:
    IF FIRST-OF(b_table.b_id) THEN DO:
       c = ENTRY(0,c) NO-ERROR.
       cTmp = get_stat_values(b_table.b_id, "exp_id", TODAY ).
    END.
END.

【讨论】:

    【解决方案2】:

    有一个记录在案的缺陷可能会导致这种情况。 https://knowledgebase.progress.com/articles/Article/000029518

    解决方法是在生产环境中启用 -rereadfields。这意味着 AVM 将重新读取记录以获取满足查询所需的字段,如果它们在询问时不可用。在开发和测试中启用它是不好的做法,这样您才能发现字段短语真正错误的地方。但在生产中它会阻止用户收到错误。

    该缺陷表明它适用于 v10 和 v11,因此推断它可能在 v12 中得到修复,但这不是保证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多