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.
我正在尝试为这种情况编写代码: 浏览每个客户(客户 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.