progress openedge error 215(为每个块创建)

progress openedge error 215 (create in for each block)

我正在尝试为这种情况编写代码: 浏览每个客户(客户 table),看看他们是否是 2018 年的会员(我在会员 table,年份字段中找到该信息)。如果当年没有会员我想创建它(创建客户)。

我的编码技能不是很好。我收到错误消息 215(不确定我是否可以翻译,但基本上:无法在 'each' 修改的 post 上完成创建,诸如此类...)。

这是我试过的代码:

FOR EACH customer NO-LOCK,
  EACH membership:
    IF CAN-FIND (FIRST membership WHERE membership.year = 2019) THEN DO:
      LEAVE.
    END.
    ELSE DO:
    CREATE membership.
      ASSIGN membership.year = 2018
             .... fill the rest of the table....
   END.
 END.

显然我做错了。非常感谢您的建议!

第一个问题是弄清楚客户和会员之间的关系。

为了便于讨论,我假设它们有一个共同的 "custNum" 字段。

在那种情况下,像这样的东西应该可以工作:

for each customer no-lock:

  if not can-find( membership where membership.year = 2018 and membership.custNum = customer.custNum ) then
    do:

      create membership.
      assign
        membership.year = 2018
        membership.custNum = customer.custNum
        /* whatever... */
      .

    end.

end.

Tom 的回答是正确的,因为它修复了您的代码并且您不再收到错误。 我将尝试解释错误消息。 错误信息是

** CREATE cannot be processed for an EACH mode record--<table>. (215)

在这种情况下,这意味着您在 EACH 成员资格循环中有 CREATE 成员资格声明。如果其余代码正确,解决方案是为 CREATE 使用不同的缓冲区。这会将您的代码更改为以下内容(这仍然是完全错误的,但应该可以消除编译错误):

define buffer bmembership for membership.

FOR EACH customer NO-LOCK,
  EACH membership:
    IF CAN-FIND (FIRST membership WHERE membership.year = 2019) THEN DO:
      LEAVE.
    END.
    ELSE DO:
    CREATE bmembership.
      ASSIGN bmembership.year = 2018
             .... fill the rest of the table....
   END.
 END.