[ |../../index.htm#lansa/rollback_e.htm]
現在地:
7.106.2 ROLLBACK の使用例
注文の明細を入力するようユーザーに要求し、注文の頭書きと関連するすべての明細行をデータベースに書き込みます。注文を保管するかどうかをユーザーに問い合わせ、応答が[YES]でない場合は、注文をデータベースから削除します。
GROUP_BY NAME(#ORDERHEAD) FIELDS(#ORDNUM #CUSTNUM #DATEDUE) DEF_LIST NAME(#ORDERLINE) FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE) DEFINE FIELD(#CONFIRM) TYPE(*CHAR) LENGTH(3) LABEL('Confirm order :') SET_MODE TO(*ADD) INZ_LIST NAMED(#ORDERLINE) NUM_ENTRYS(20) REQUEST FIELDS(#ORDERHEAD) BROWSELIST(#ORDERLINE) INSERT FIELDS(#ORDERHEAD) TO_FILE(ORDHDR) SELECTLIST NAMED(#ORDERLINE) GET_ENTRYS(*NOTNULL) INSERT FIELDS(#ORDERLINE) TO_FILE(ORDLIN) ENDSELECT REQUEST FIELDS((#CONFIRM)(#ORDNUM *NOCHG)) IF COND('#CONFIRM = YES') COMMIT MESSAGE MSGTXT('Order has been commited to the database') ELSE ROLLBACK MESSAGE MSGTXT('Order has been removed from the database') ENDIF
(例えば) 4行目の明細行の書き込み中にこのファンクションが失敗した場合、自動ロールバックが実行されます。これにより、注文の頭書きと作成済みのすべての明細行がファイルでロールバックされます。
[
|../../index.htm#lansa/rollback_e.htm]