RecordSet (クラス)
public abstract shared RecordSet {inherits EventTarget}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.DATA-ACCESS.BASE.
直接継承しているサブクラス: EmptyRecordSet, EventManagingRecordSet, RecordView, ConnectedRecordSet

共通のスキーマを共有するすべてのデータ タプルつまり Record のコレクション。

説明

中にある各 Record は、フィールド名 (fields の記述子で定義) をデータ値にマップします。RecordFields メタデータは、データ要素のポピュレーション、表示、既定比較、検証、インデックス作成を制御します。
レコードセット内のレコードには、to-Iterator メソッドを使ってアクセスできます。レコードセットの modifiable? が true の場合、変更可能な Record が返されます。Record の作成と追加は、new-recordappend で行い、削除は Record.delete で行います。

コンストラクタ
default:このオブジェクトを作成します。
コンストラクタ protected {RecordSet.default ...:EventHandler}
default:このクラスのインスタンスを作成します。
ファクトリ public {RecordSet.default
fields:RecordFields,
modifiable?:bool = true,
...:Object
}:RecordSet

プロパティ
batch-events?:このオブジェクトで発生する RecordSetEvent を抑制するよう要求するにはこのフラグを true に設定します。これらのイベントはフラグを false に戻したときにバッチ単位で送られます。
アクセサ public abstract RecordSet.batch-events?:bool
セッター public abstract RecordSet.batch-events?:bool
fields:Record に現れるデータ アイテムの特徴を定義するフィールド記述子 (RecordFields)。
アクセサ public abstract RecordSet.fields:RecordFields
load-state:現在のロード状態。この値が変わると、RecordSetLoadStateChanged イベントが発生します。
アクセサ public abstract RecordSet.load-state:RecordSetLoadState
modifiable?:内容の変更が許可されているかどうかを示します。
アクセサ public abstract RecordSet.modifiable?:bool
pending-update?:この RecordSet でペンディング中の更新があるかどうか調べます。
アクセサ public abstract RecordSet.pending-update?:bool
registered-views:この RecordSet で登録されている RecordView
フィールド protected RecordSet.registered-views:{Set-of {WeakPointer-to RecordView}} ={{Set-of {WeakPointer-to RecordView}}}
size:この RecordSet 内の Record 数。
アクセサ public abstract RecordSet.size:int
プロパティ 継承 EventTarget: event-handlers

メソッド
append:RecordSet に新規レコードを追加します。
public abstract {RecordSet.append new-record:any}:void
commit:変更されたすべての Record をコミットします。
public abstract {RecordSet.commit}:void
delete-all:すべての Record を削除します。
public abstract {RecordSet.delete-all}:void
ensure-attached:record がこの RecordSet にアタッチされていない場合は DataException をスローします。
protected {RecordSet.ensure-attached rec:Record}:void
ensure-modifiable:この RecordSet が変更不可能な場合は DataNotModifiable 例外をスローします。
protected {RecordSet.ensure-modifiable}:void
handle-event:適切な EventHandlers を呼び出してイベントを処理します。
public {RecordSet.handle-event event:Event}:void
load:この RecordSet をロードまたは再ロードします。
public abstract {RecordSet.load}:void
member?:record がこの RecordSet に含まれているかどうか示します。
public abstract {RecordSet.member? r:Record}:bool
new-record:新しい Record を作成します。
public abstract {RecordSet.new-record}:Record
on-record-set-event:すべての RecordSetEvent のスタティック イベント ハンドラ。
public {RecordSet.on-record-set-event ev:RecordSetEvent}:void
register-view:この RecordSetRecordView を登録します。
public {RecordSet.register-view view:RecordView}:void
revert:変更されたすべての Record を復帰させます。
public abstract {RecordSet.revert}:void
select:指定 RecordFilter を通過したレコードの配列を返します。
public {RecordSet.select filter:#RecordFilter = null}:{Array-of Record}
select-one:指定された RecordFilter をパスする 1 レコードを返します。
public {RecordSet.select-one filter:#RecordFilter = null}:#Record
to-Iterator:すべてのアクティブな RecordIterator-of を返します。
public abstract {RecordSet.to-Iterator}:{Iterator-of Record}
unregister-view:この RecordSetRecordView を登録解除します。
public {RecordSet.unregister-view view:RecordView}:void
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, remove-event-handler, verify-event
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
protected {RecordSet.default ...:EventHandler}

このオブジェクトを作成します。

...: このレコードセットに適用される 0 個以上の EventHandler


default (ファクトリ)
public {RecordSet.default
fields:RecordFields,
modifiable?:bool = true,
...:Object
}:RecordSet

このクラスのインスタンスを作成します。

説明

このファクトリーは LocalRecordSet、すなわちローカルのメモリ内にある RecordSet のインスタンスを作成します。
fields: Record 内に現れるデータ アイテムを定義するフィールド記述子。
...: レコード データを含む RecordData オブジェクト。このオブジェクトに適用する EventHandler を含めることもできます。

例外のスロー

指定 fields に対して検証不可能な値が RecordData オブジェクトのいずれかに含まれている場合、ValidationException がスローされます。



プロパティ詳細
batch-events? (アクセサ)
アクセサ public abstract RecordSet.batch-events?:bool
セッター public abstract RecordSet.batch-events?:bool

このオブジェクトで発生する RecordSetEvent を抑制するよう要求するにはこのフラグを true に設定します。これらのイベントはフラグを false に戻したときにバッチ単位で送られます。

説明

アプリケーションでアクションを生成するイベントが比較的多数実行されることになっていて、それらによる操作中の「イベント ストーム」を回避するには、これが役に立ちます。
このフラグが true の間は、RecordSet 自体で RecordSetEvent を発生できなくなります。このフラグが false に戻されると、この期間にレコードセットの状態に起こった変化を表す 1 つの RecordsChanged が発生します。これは通常 (常時ではありません)、RecordsBulkChanges です。
レコードセットの load-state も変化している場合は、この単一の RecordsChanged イベントに続いて RecordSetLoadStateChanged が発生することもあります。
実装では、このフラグが false の状態でもバルク イベントを任意に生成できることに注意してください。

プログラミング注意事項

このフラグの変更が適切に設定され、最終的に false に必ず戻るように、{with} マクロを使ってこのフラグを true に設定することを強くお勧めします。
通常アプリケーションではこのフラグを直接 false に設定しません。


fields (アクセサ)
アクセサ public abstract RecordSet.fields:RecordFields

Record に現れるデータ アイテムの特徴を定義するフィールド記述子 (RecordFields)。



load-state (アクセサ)
アクセサ public abstract RecordSet.load-state:RecordSetLoadState

現在のロード状態。この値が変わると、RecordSetLoadStateChanged イベントが発生します。



modifiable? (アクセサ)
アクセサ public abstract RecordSet.modifiable?:bool

内容の変更が許可されているかどうかを示します。



pending-update? (アクセサ)
アクセサ public abstract RecordSet.pending-update?:bool

この RecordSet でペンディング中の更新があるかどうか調べます。

説明

Record.pending-update? を参照してください。


registered-views (フィールド)
protected RecordSet.registered-views:{Set-of {WeakPointer-to RecordView}} ={{Set-of {WeakPointer-to RecordView}}}

この RecordSet で登録されている RecordView

説明

直接変更しないでください。詳細は register-view を参照してください。


size (アクセサ)
アクセサ public abstract RecordSet.size:int

この RecordSet 内の Record 数。






メソッド詳細
append (メソッド)
public abstract {RecordSet.append new-record:any}:void

RecordSet に新規レコードを追加します。

new-record: anynew-record の呼び出しにより生成された Record か、新規レコードのデータを含む RecordData

説明

RecordData が入力値の場合、このオブジェクトは最初に RecordSet.new-record を使って新規レコードを作成してから、そのデータを新規レコードに適用します。
追加に失敗した場合、例外がスローされレコードセットはそのまま変更されません。

例外のスロー



commit (メソッド)
public abstract {RecordSet.commit}:void

変更されたすべての Record をコミットします。

説明

Record.commit を参照してください。
この操作はすべてのレコードに対してアトミックであると考えてください。この操作が任意の 1 レコードで失敗した場合、レコードセットの状態はそのまま変更されません。


delete-all (メソッド)
public abstract {RecordSet.delete-all}:void

すべての Record を削除します。

説明

個々のメンバ レコードで Record.delete を呼び出す代わりに、このメソッドで効率的に処理できます。

オーバーライド

このメソッドの実装では、一連の RecordsChanged イベントよりも単一の RecordsBulkChanges イベントをトリガするようにしてください。


ensure-attached (メソッド)
protected {RecordSet.ensure-attached rec:Record}:void

record がこの RecordSet にアタッチされていない場合は DataException をスローします。

説明

この Record の変更を行うコード ブロックの前に内部で呼び出されるメソッド。
アタッチされている (attached)レコードがすべて RecordSet のメンバというわけではありません。特に、new-record メソッドで作成された新規レコードは、append メソッドが呼び出されるまでレコードセットのメンバではありませんがアタッチされているとみなされます。


ensure-modifiable (メソッド)
protected {RecordSet.ensure-modifiable}:void

この RecordSet が変更不可能な場合は DataNotModifiable 例外をスローします。

説明

この RecordSet の変更を行うコード ブロックの前に内部で呼び出されるメソッド。


handle-event (メソッド)
public {RecordSet.handle-event event:Event}:void

適切な EventHandlers を呼び出してイベントを処理します。

event: 処理する Event。


load (メソッド)
public abstract {RecordSet.load}:void

この RecordSet をロードまたは再ロードします。



member? (メソッド)
public abstract {RecordSet.member? r:Record}:bool

record がこの RecordSet に含まれているかどうか示します。



new-record (メソッド)
public abstract {RecordSet.new-record}:Record

新しい Record を作成します。

説明

レコードは RecordState.new 状態で返されます。append が呼び出されるまで、実際にレコードセットのメンバにはなりません。
modifiable? が false の場合、DataNotModifiable 例外をスローします。


on-record-set-event (メソッド)
public {RecordSet.on-record-set-event ev:RecordSetEvent}:void

すべての RecordSetEvent のスタティック イベント ハンドラ。

ev: 処理する RecordSetEvent

説明

このハンドラは、ev ですべてのダイナミック ハンドラが呼び出された後で呼び出されます。
このメソッドの既定の実装では、登録されているすべてのビューに RecordView.note-record-set-event-at-source メソッドを使ってイベントを送ります。

オーバーライド

RecordSetEvent に応答するにはこのメソッドをオーバーライドします。実装では必ずスーパー実装を呼び出してください。


register-view (メソッド)
public {RecordSet.register-view view:RecordView}:void

この RecordSetRecordView を登録します。

プログラミング注意事項

通常はアプリケーションから呼び出しません。 RecordView の実装で使用します。

説明

登録中には、RecordView.note-record-set-event-at-source メソッドによって view はこのオブジェクトが処理したすべての RecordSetEvent の通知を受け取ります。
view の登録は weak な関連付けであり、view またはこのオブジェクトがガーベッジ コレクトされるのを防ぐものではないことに注意してください。
unregister-view も参照してください。

オーバーライド

このメソッドの実装では、必ずスーパー実装を呼び出してください。


revert (メソッド)
public abstract {RecordSet.revert}:void

変更されたすべての Record を復帰させます。

説明

Record.revert を参照してください。


select (メソッド)
public {RecordSet.select filter:#RecordFilter = null}:{Array-of Record}

指定 RecordFilter を通過したレコードの配列を返します。

filter: RecordFilter または nullnull の場合、すべてのレコードが返されます。

説明

このメソッドは元のレコードのクローン コレクションを返します。したがって、これを繰り返し処理することによりメンバ レコードを安全に操作することができます。詳細は to-Iterator を参照してください。


select-one (メソッド)
public {RecordSet.select-one filter:#RecordFilter = null}:#Record

指定された RecordFilter をパスする 1 レコードを返します。

filter: RecordFilter または nullnullRecordSet に 1 つ含まれいてる場合は、1 レコードが返されます。

説明

複数のレコードが filter をパスする場合、1 レコードだけが返されます。


to-Iterator (メソッド)
public abstract {RecordSet.to-Iterator}:{Iterator-of Record}

すべてのアクティブな RecordIterator-of を返します。

説明

このメソッドで関連レコードのスナップショットが必ず得られるわけではありません。したがって、この反復子にアクセスしている間に RecordSet の構成メンバが変更されるとエラーが発生する場合があります。この変更には、レコードの永久削除、新規フィルタまたはソートの適用、あるいはソートやフィルタの結果も変化するようなデータの変更が含まれます。
このメソッドは RecordSet を繰り返し処理するには最もメモリ効率のよい方法です。ただし、このメソッドを安全に使用できるかどうか不明の場合は、代わりに select メソッドを null フィルタを指定して使用してください。select は関連レコードのクローン配列を作成します。


unregister-view (メソッド)
public {RecordSet.unregister-view view:RecordView}:void

この RecordSetRecordView を登録解除します。

プログラミング注意事項

通常はアプリケーションから呼び出しません。 RecordView の実装で使用します。

説明

register-view を参照してください。