我正在尝试为这种情况编写代码: 仔细检查每个客户(客户表),看看他们是否是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.
显然我做错了。建议将不胜感激!
答案 0 :(得分:4)
第一个问题是弄清楚客户和会员之间的关系。
为了便于讨论,我假设它们有一个共同的“ 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 :(得分:1)
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.