我有一个阅读标题和详细信息表的任务。
标题获取订单号
详细。 键是ordernumber,orderline。
c Keyordnum Setll detail
c Iffound
c Keyordnum reade detail
c* read for each orderline update the warehouse field
c xxxxxxx update detailformat
我遇到的问题是编写重复记录时出错。
问题1.上面的xxxxxx是否可以创建ordernumber和orderline的复合键并以这种方式更新?问题是如何更新每一行。
如果不是这样,你如何解决读取部分密钥和更新每一行的问题?
答案 0 :(得分:0)
UPDATE
没有因素1.使用UPDATE
时,您不会使用密钥。更新的记录是您阅读的最后一条记录。
您的代码似乎并不完整。我期待这样的事情:(以自由格式书写,因为我没有在10年内编写固定格式)
setll keyordno detail;
if %found(detail);
reade keyordno detail;
dow not %eof(detail);
//set warehouse field
update detailformat;
reade keyordno detaill;
enddo;
endif;
除非存在涉及仓库字段的唯一密钥,否则您不应该看到重复的记录。
答案 1 :(得分:0)
xxxxxx以上作为更新的因素不能有复合键,如果有重复,则在更新之前已经读取过。
因此,如果您不确定是否从标题本身读取重复的订单号,请将带有工作变量(wk_ordernum)的附加检查更改为再次读取。像这样的东西..
if wk_ordernum <> ordernumber; //check duplicate ordernumber
wk_ordernum = ordernumber;
setll keyordno detail;
if %equal(detail);
reade keyordno detail;
dow not %eof(detail);
//set warehouse field
update detailformat;
reade keyordno detaill;
enddo;
endif;
endif; // end check duplicate ordernumber