ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
entitySelection.refresh( )

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

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)