[
|../../index.htm#lansa/l4wdev05_0135.htm]
現在地:
ここでは前節の問い合わせ処理ファンクションを改訂して、レコードの保守(データの修正)もできるようにします。
処理対象ファイル
物理ファイル「CUSMST」(顧客マスター)
RDMLプログラム
GROUP_BY NAME(#CUSTOMER) FIELDS((#CUSTNO *NOCHG) #NAME #ADDL1 #ADDL2 #ADDL3) BEGIN_LOOP REQUEST FIELD(#CUSTNO) FETCH FIELDS(#CUSTOMER) FROM_FILE(CUSMST) WITH_KEY(#CUSTNO) IF_STATUS IS(*OKAY) SET_MODE TO(*DISPLAY) DISPLAY FIELDS(#CUSTOMER) CHANGE_KEY(*YES) IF_MODE IS(*CHANGE) UPDATE FIELDS(#CUSTOMER) IN_FILE(CUSMST) VAL_ERROR(*LASTDIS) ENDIF ELSE MESSAGE MSGTXT('No customer exists with this number') ENDIF END_LOOP
着目点:
したがって、他のユーザーが、この間に同じレコードを更新してしまうこともありえます。作業中に昼休みになった場合など、ロックされない状態で30分以上放置されることもあるので、問題が起こりそうに見えます。
しかしCUSMSTの作成や保守にLANSAを使っている場合、問題が起こることはありません。UPDATEコマンドは自動的に、読み込みから更新までの間にレコードが更新されていないか確認するようになっているからです。この間に他のユーザーが同じレコードを更新していた場合、UPDATEコマンドを実行しようとするとエラーとなり、更新が拒絶されたことを示すメッセージが自動的に表示されます。DISPLAY画面が再び表示され、エラー・メッセージが示されます。
[
|../../index.htm#lansa/l4wdev05_0135.htm]