10-25-2013, 10:59 AM
RecordRemoved は、レコードが削除された際に発生するイベントと思っていたのですが、
Reocrd.delete をコールした際には、発生しないようですね。
・1件だけレコードを削除したあとに、コミットすると、RecordRemoved が発生する
・削除されたレコード(RecordRemoved.record )の値を参照することはできない。
・複数権レコードを削除したあとにコミットすると RecordsBulkChanges が発生する(RecordRemovedは発生しない)
上記の認識は正しいのでしょうか。
その場合、レコードが削除されたときのハンドリングは RecordModified で レコードの状態を見る、という方式が正しいのでしょうか。
また、上記以外で RecordRemoved が発生するケースには、どんなものがあるのでしょうか。
Reocrd.delete をコールした際には、発生しないようですね。
・1件だけレコードを削除したあとに、コミットすると、RecordRemoved が発生する
・削除されたレコード(RecordRemoved.record )の値を参照することはできない。
・複数権レコードを削除したあとにコミットすると RecordsBulkChanges が発生する(RecordRemovedは発生しない)
上記の認識は正しいのでしょうか。
その場合、レコードが削除されたときのハンドリングは RecordModified で レコードの状態を見る、という方式が正しいのでしょうか。
また、上記以外で RecordRemoved が発生するケースには、どんなものがあるのでしょうか。
Code:
{let rs:RecordSet =
{RecordSet
{RecordFields
{RecordField "Index", domain = int},
{RecordField "First", domain = String},
{RecordField "Last", domain = String}
},
{RecordData First = "John", Last = "Smith", Index = 1},
{RecordData First = "Jane", Last = "Smith", Index = 2},
{RecordData First = "Jane", Last = "Jones", Index = 3},
{on e:RecordModified at rs:RecordSet do
{if e.record.state == RecordState.deleted then
{popup-message "RecordModified 削除レコード Index: " & e.record["Index"]}
}
},
{on e:RecordRemoved at rs:RecordSet do
||下記処理は、エラーになる
||メッセージ:分離した Record に対して操作を実行しようとしています。
{popup-message "RecordRemoved 削除レコード Index:" & e.record["Index"]}
}
}
}
{def rg = {RecordGrid record-source = rs}}
{value rg}
{CommandButton
label = "delete",
{on Action do
{rg.current-record.delete}
}
}
{CommandButton
label = "commit",
{on Action do
{rs.commit}
}
}