Ошибка выполнения шага 215 (создать для каждого блока) - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь написать код для этого сценария: просмотрите каждого клиента (таблицу клиентов), чтобы увидеть, были ли они членами года 2018 (я нахожу эту информацию в таблице членства, поле года).Если в этом году нет членства, я хочу создать его (создать клиента).

Мои навыки программирования не велики.Я получаю сообщение об ошибке 215 (не уверен, что смогу перевести, но в основном: создать нельзя на «каждом» измененном посте, что-то вроде этого ...).

Это код, который я пробовал:

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.

Очевидно, я делаю это неправильно.Предложения будут очень признательны!

Ответы [ 2 ]

4 голосов
/ 18 марта 2019

Первая проблема - выяснить, как связаны клиент и членство.

Ради обсуждения я предполагаю, что у них есть общее поле "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.
1 голос
/ 19 марта 2019

Ответ Тома верен в том, что он исправляет ваш код, и вы больше не получаете ошибку. Я постараюсь объяснить сообщение об ошибке. Сообщение об ошибке

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

В этом случае это означает, что у вас есть оператор членства CREATE внутри цикла членства EACH. Если бы остальная часть кода была правильной, решение было бы использовать другой буфер для 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...