|   | 
      ■キャッシュアップデート | 
        | 
    
     
      |   | 
        | 
      ●学習内容 | 
        | 
    
     
      |   | 
        | 
        | 
       ここで新しい技術が出てきましたが、キャッシュアップデートは読み取り専用データセット(SQL文で作成されるデータセット)の更新には必要な技術ですので理解しておいてください。 | 
        | 
    
     
      |   | 
        | 
        | 
        | 
        | 
        | 
    
     
      |   | 
        | 
      ★キャッシュアップデートを使うかどうかの判断 | 
        | 
    
     
      |   | 
        | 
        | 
       データセットが単一のテーブルの場合、RequestLiveを利用する事でテーブルを更新する事が出来ます。しかし、以下の条件の場合は、RequestLiveを利用する事ができません。 
        ・複数の表の結合がある場合 
        ・更新が許可されていないテーブルまたはビューの場合 
        ・副問い合わせが含まれいる場合 
        ・インデックスに基づかないORDER BY句が含まれている場合 
        今回のプログラムでは、複数のテーブルを結合し表示しているのでその更新の方法として、TQuery、キャッシュアップデートとUpdateSQLを利用して更新を行います。 
         | 
        | 
    
     
      |   | 
        | 
        | 
        | 
        | 
        | 
    
     
      |   | 
        | 
      ★キャッシュアップデートの仕組み | 
        | 
    
     
      |   | 
        | 
        | 
       キャッシュアップデートの仕組みは、データセットの更新情報をすべてローカルキャッシュに保存しておき、データベースへの適用時にその情報を利用して追加、更新、削除をデータベースに反映させるというものです。この仕組みをイメージで以下に示します。 | 
        | 
    
     
      |   | 
        | 
        | 
       
        
       | 
        | 
    
     
      |   | 
        | 
        | 
        | 
        | 
        | 
    
     
      |   | 
      ●キャッシュアップデート利用法 | 
        | 
    
     
      |   | 
        | 
      ★設定方法 | 
        | 
    
     
      |   | 
        | 
       | 
      T.データセットのCachedUpdateプロパティをTrueにする。 | 
        | 
    
     
      |   | 
        | 
       | 
      U.キャッシュアップデートを利用するデータセットコンポーネントのUpdateObjectプロパティにTUpdateSQLコンポーネントを設定する。 | 
        | 
    
     
      |   | 
        | 
       | 
      V.TUpdateSQLコンポーネントをダブルクリックするか、右クリックから[UpdateSQLの設定(U)]を選択し、表示されるエディタを利用してSQL文を生成する。 | 
        | 
    
     
      |   | 
        | 
        | 
        | 
        | 
        | 
    
     
      |   | 
        | 
        | 
      SQL文は更新する表ごとに作成するので更新対象とする[テーブル名(N)]を指定し、[テーブル項目の取得(T)]を行います。キー項目と更新する項目を指定して[SQL文を生成(G)]を行います。キー項目とは、UPDATE、DELETE、文のWHERE句に利用する項目のことです。更新する項目は、更新対象の列のことです。 | 
        | 
    
     
      |   | 
        | 
       
        
       | 
       
        
       | 
       
        
       | 
    
     
      |   | 
        | 
       | 
      W.コードにより実行する。その手順を以下に示します。少しややこしいので説明をしっかり呼んでください。 | 
        | 
    
     
      |   | 
        | 
       
        
       | 
       
        
       | 
        | 
    
     
      |   | 
        | 
      ★コードの記述について | 
        | 
    
     
      |   | 
        | 
        | 
       キャッシュアップデートの内容をデータベースに適用させるには、ApplyUpdateメソッドを実行します。ApplyUpdateメソッドは、OnUpdateRecordイベントを呼び出します。OnUpdateRecorイベントでTUpdateSQLのApplyメソッドを呼び出します。Applyメソッドは、UpdateSQLのSQL文を実行します。 
         ApplyUpdateメソッドを実行した後は、必ずCommitUpdateメソッドを呼び出してキャッシュされた更新内容を解放してください。また、OnUpdateRecordでApplyメソッド呼び出した後にUpdateActionをUaAppliedに指定する事も忘れないでください。UaAppliedと指定する事でキャッシュされた内容が削除の対象となります。 
         結果セットの更新情報をデータベースに反映させるためには、キャッシュアップデートを適用します。更新さらたテーブルを表示するには、データセットを一度閉じ、開きなおさなければなりません。 
         | 
        | 
    
     
      |   | 
        | 
        | 
        | 
        | 
        |