ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entitySelection.refresh( )
|
entitySelection.refresh () | ||||||||
このコマンドは引数を必要としません | ||||||||
注: このメソッドはリモートデータストア(クライアント/サーバーモード、またはOpen datastore 接続)においてのみ動作します。
entitySelection.refresh( ) メソッドはローカルのORDA キャッシュにあるエンティティセレクションデータを即座に"無効化"します。そのため、4D が次にエンティティセレクションを必要としたときにはそれがデータベースからリロードされます。
デフォルトでは、ローカルのORDAのキャッシュは30秒後に無効化されます。クライアント/サーバーモードのアプリケーションのコンテキストにおいてORDA とクラシック言語の両方を使用している場合、このメソッドを使用することでリモートアプリケーションが必ず最新のデータを使用するようにすることができます。
ここでは、クラシック言語とORDA言語の両方が、同じデータを同時に編集する場合を考えます:
// リモートの4D上で実行
C_OBJECT($selection;$student)
$selection:=ds.Students.query("lastname=:1";"Collins")
// 最初のエンティティをORDA のキャッシュに読み込む
$student:=$selection.first()
// 4Dのクラシック言語でデータを更新する。ORDA キャッシュはこのことは知らない
QUERY([Students];[Students]lastname="Collins")
[Students]lastname:="Colin"
SAVE RECORD([Students])
// 最新のバージョンを取得するため、ORDA キャッシュを一度無効化する必要がある
$selection.refresh()
// キャッシュが失効していなくても、最初のエンティティはディスクから再読み込みされる
$student:=$selection.first()
//$student.lastname には"Colin"が格納されている
リストボックスにForm.students エンティティセレクションを表示し、複数のクライアントがそれを操作する場合を考えます。
// フォームメソッド:
Case of
:(Form event code=On Load)
Form.students:=ds.Students.all()
End case
//
//
// クライアント#1にて、ユーザーが最初のエンティティをロードし、更新して保存した
// 次にクライアント#2にて、ユーザーが同じエンティティをロードし、更新して保存した
//
//
// クライアント#1において:
Form.students.refresh() // Form.students エンティティセレクションのORDA キャッシュを無効化する
// リストボックスの中身はデータベースの内容で更新され、クライアント#2が行った変更も反映される
プロダクト: 4D
テーマ: ORDA - エンティティセレクション
初出: 4D v18 R3
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)