テーブルごとにダウンロードサブセットをカスタマイズします。各 Mobile Link リモートデータベースでは、統合データベースに格納されているデータのサブセットを同期できます。
前提条件
同期モデルが必要です。テーブルマッピングのダウンロードタイプは [カスタム] に設定されていない必要があります。
Mobile Link オブジェクト名をダブルクリックします。
[同期モデル] をダブルクリックし、同期モデル名を選択します。
[マッピング] タブをクリックします。
[テーブルマッピング] ウィンドウ枠で、リモートテーブルを選択します。
[詳細] ウィンドウ枠で、[サブセットのダウンロード] タブを開きます。
[サブセットのダウンロード] ドロップダウンリストから次のダウンロードサブセットのいずれかを選択します。[なし]、[ユーザ]、[リモート]、または [カスタム]。
[ユーザ] または [リモート] を選択した場合は、ユーザ名とリモート ID を保持するカラムが置かれている場所を識別します。
同期されている統合テーブルにカラムがある場合は、[統合テーブルでカラムを使用する] を選択し、[カラム名] ドロップダウンリストからユーザ名またはリモート ID を保持するカラムを選択します。
カラムが別のテーブルにある場合は、[共有されている関係テーブル内のカラムを使用する] を選択します。[ジョインするテーブル] ドロップダウンリストからカラムが含まれているテーブルを選択します。[一致させるカラム] ドロップダウンリストで、ユーザ名またはリモート ID を保持しているカラムを選択します。ジョイン条件を使用して、同期テーブルをシャドウテーブルにジョインするためのジョイン条件を定義します。
[カスタム] を選択した場合は、2 つのテキストボックスが表示されます。このテキストボックスには download_cursor スクリプトの作成に使用する情報を追加できます。download_cursor をすべて自分で作成する必要はありません。ダウンロードサブセットのジョインやその他の制限を指定するために追加情報を指定する必要があるだけです。
download_cursor にその他のテーブルへのジョインが必要な場合は、最初のテキストボックス ([ダウンロードカーソルの FROM 句に追加するテーブル]) にテーブル名を入力します。ジョインで複数のテーブルが必要な場合は、カンマで区切ります。
2 つ目のボックス ([ダウンロードカーソルの WHERE 句で使用する SQL 式]) に、ダウンロードサブセット条件とジョイン条件を指定する、生成された WHERE 句に追加する SQL 式を入力します。認証パラメータを含む Mobile Link 名前付きパラメータを式で使用できます。デフォルトでは、これと同じ式とジョインされたテーブルがダウンロード削除サブセット用に使用されます。削除の追跡用にシャドウテーブルを使用しており、同じ式を使用する場合、式にベーステーブル名は使用しないようにします。それができない場合は、カスタムダウンロード削除サブセットを使用します。
例
「ユーザの例」
たとえば、CustDB の ULOrder テーブルは、ユーザ間で共有できます。デフォルトで、注文は作成した従業員に割り当てられていますが、別の従業員によって作成された注文を確認したい場合があります。たとえば、マネージャは、部署の従業員が作成したすべての注文を確認する必要があるかもしれません。CustDB データベースでは、この状況に備えるために、ULEmpCust テーブルを使用します。これにより、顧客を従業員に割り当てることができます。マネージャは、ある従業員と顧客の関係における注文をダウンロードします。
ダウンロードサブセットなしで、ULOrder の download_cursor スクリプトを表示します。次に、[マッピング] タブで ULEmpCust テーブルを選択します。[ダウンロードタイプ] で [タイムスタンプ]、[サブセットのダウンロード] で [なし] をそれぞれ選択します。テーブルを右クリックし、[イベントに移動] をクリックします。テーブルの download_cursor は、次のようになります。
SELECT "DBA"."ULOrder"."order_id", "DBA"."ULOrder"."cust_id", "DBA"."ULOrder"."prod_id", "DBA"."ULOrder"."emp_id", "DBA"."ULOrder"."disc", "DBA"."ULOrder"."quant", "DBA"."ULOrder"."notes", "DBA"."ULOrder"."status" FROM "DBA"."ULOrder" WHERE "DBA"."ULOrder"."last_modified" >= {ml s.last_table_download} |
[マッピング] タブに戻ります。[詳細] ウィンドウ枠の [サブセットのダウンロード] タブで、ULOrder の [サブセットのダウンロード] ドロップダウンリストを [ユーザ] に変更します。[ジョインされている関係テーブル内のカラムを使用する] を選択します。ジョインするテーブルで、ULEmpCust を選択します。一致させるカラムで、emp_id を選択します。ジョイン条件で、DBA.ULOrder.cust_id=DBA.ULEmpCust.cust_id を選択します。
一番上のウィンドウ枠でテーブルを右クリックし、[イベントに移動] をクリックします。テーブルの download_cursor は、次のようになります (新しい行を太字で示しています)。
SELECT "DBA"."ULOrder"."order_id",
"DBA"."ULOrder"."cust_id",
"DBA"."ULOrder"."prod_id",
"DBA"."ULOrder"."emp_id",
"DBA"."ULOrder"."disc",
"DBA"."ULOrder"."quant",
"DBA"."ULOrder"."notes",
"DBA"."ULOrder"."status"
FROM "DBA"."ULOrder", "DBA"."ULEmpCust"
WHERE "DBA"."ULOrder"."last_modified" >= {ml s.last_table_download}
「AND "DBA"."ULOrder"."cust_id" = "DBA"."ULEmpCust"."cust_id"
AND "DBA"."ULEmpCust"."cust_id" = {ml s.username}」 |
Mobile Link ユーザによる Customer というテーブルのダウンロードをサブセットし、active=1 であるローのみをダウンロードするとします。Mobile Link ユーザ名はサブセットするテーブルに存在しないため、ユーザ名が含まれる SalesRep というテーブルへのジョインを作成する必要があります。
[マッピング] タブで、Customer テーブルのマッピングを選択します。[詳細] ウィンドウ枠の [ダウンロードタイプ] タブを開きます。ダウンロードタイプを [タイムスタンプ] に設定します。[詳細] ウィンドウ枠の [サブセットのダウンロード] タブを開きます。[サブセットのダウンロード] ドロップダウンリストの [カスタム] を選択します。最初のテキストボックス ([ダウンロードカーソルの FROM 句に追加するテーブル]) に、次のように入力します。
SalesRep |
2 つ目のテキストボックス ([ダウンロードカーソルの WHERE 句で使用する SQL 式]) に、次のように入力します。
SalesRep.ml_username = {ml s.username} AND Customer.active = 1 AND Customer.cust_id = SalesRep.cust_id |
cust_id カラムが両方のテーブルにあるので、これらのカラムへの参照は、式でテーブル名をプレフィクスとして付ける必要があります。削除の追跡をダウンロードするためにシャドウテーブルを使用する場合、シャドウテーブルが Customer ではなく Customer_del と呼ばれるので、Customer テーブルマッピングの [ダウンロード削除サブセット] カラムにある [なし] または [カスタム] を使用する必要があります。
一番上のウィンドウ枠でテーブルを右クリックし、[イベントに移動] をクリックします。テーブルの download_cursor は、次のようになります。
SELECT "DBA"."Customer"."cust_id", "DBA"."Customer"."cust_name" FROM "DBA"."Customer", SalesRep WHERE "DBA"."Customer"."last_modified" >= {ml s.last_table_download} AND SalesRep.ml_username = {ml s.username} AND Customer.active = 1 AND Customer.cust_id = SalesRep.cust_id |
WHERE 句の最後の行により、Customer から SalesRep へのキージョインが作成されます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |