このセクション::
ページのデザインにいくつもの DB データソースをページソースとして追加し、使用することができます。DB ページソースが編集可能である、または編集不可能であるかはページソースが追加される際 に定義されます。データがプレゼンテーションのみに必要な場合は、 DB ページソースを編集不可能に設定します。クライアントにデータの変更を許可する場合は、ページソースを編集可能に設定します。
DB ソースが追加されると、データツリーが生成されます (のスクリーンショットと 下のツリー構造のセクションを参照してください)。各 DB テーブル行は、 行要素に対応します。テーブルの列は行要素の属性として追加されます。ページソースが複数のページに使用される場合、単一のツリー構造がページソースの全てのインスタンスで共有されます。他のページで使用されるページソースが追加される都度、ツリー構造を共有するオプションを使用することができます。共有される構造が変更される場合、ページの複数インスタンスの共有されるデータソースを変更するオプションが与えられます。または、共有されるページソースは、変更され他インスタンス内でのみ変更されます。
メモ: | SQL ステートメントがページソース内に保管されている場合、クライアントデバイス上でデザインの実行中、ファイアーウォールルールがトリガーされる可能性があります。 これを回避するために、以下を行うことが奨励されています: (i) ページソースプロパティを「サーバーのみにページソースプロパティのデータを保管する」に設定します。 (ii) クライアント接続のために SSL を使用します。 (iii) SQL ステートメントをサーバー上で必要に応じてアセンブルします。 |
ページソースとして DB を使用するデザインを作成し、他の同じ構造を持つ DB に切り替え、元のデザインの使用を継続することができます。ページソースの DB を切り替えるには、ツリーの $DB ルートノードを右クリックし、[DB データソースの選択] を選択して、 [DB 接続プロセス] を続行します。
同じテーブル名、同じ列名、同じ列定義を持つ場合、2 つの DB は同じ構造を持つと考えられます。新しい構造が異なる場合は、 DB への接続が設立されても、 新しい DB からのデータを使用してページソースは更新されません。DB の切り替えが中断されると、ページソースは元 DB を使用して接続を継続します。
メモ: | DB が、大文字と小文字を区別するスイッチに関連する場合、 SQL ステートメント XPath 式、および一致しない名前を使用する他の構成を変更する必要がります。 |
すべての DB ページソースには次の構造があります:
$DBX (ルートノード)
|
|--DB (ルート要素)
| |
| |--RowSet (DB テーブルのコンテナー要素)
| | |
| | |--Row (DB テーブル)
| | | |
| | | |--<attributes> (DB テーブルのカラム)
XPath 式を使用して、ツリー内のノードをアドレスすることができます。(ノードのコンテキスト メニューを介して) ノードがページの XPath コンテキスト ノード として設定されている場合、 XPath 式をコンテキスト ノードに対応して作成することができます。その他の場合は、ノードを次にリストされるルートノードから開始する絶対パスを使用してアドレスすることができます: $DBX/DB/RowSet/Row/MyAttribute。
XQuery 式を使用して、 DB ツリー内のデータを取得または操作することができます。下の主キーセクションを参照してください。
データを編集し、保存するには、ツリーはページ ソースに、 RowSet 要素のコピーである OriginalRowSet 要素を含む必要があります。オリジナルのデータは OriginalRowSet 要素に保存され、編集されたデータは RowSet 要素に保存されます。データ ソースが保存されると、OriginalRowSet と RowSet の 2 つのツリーの差異が計算され、ページソースは差異を基に更新されます。 修正に成功すると、修正されたデータは、OriginalRowSet にコピーされ、OriginalRowSetが新しく保存された DB データを含み、修正プロセスが繰り返すことができます。
ページソースの OriginalRowSet を作成するには、ページソースのルート ノードを右クリックして、コマンド [OriginalRowSet の作成] を切り替えます。
[OriginalRowSet の作成] コマンドは、データベース型 ($DB) ルート ノードのために有効化されています。ページソースの元のデータを含むデータ構造を作成/削除する切り替えコマンドです。 ユーザーにより修正されたデータはページソースにより作成されたメインの構造に保存されています。修正されたデータが DB に保存されると、 OriginalRowSet 構造は新たに DB に保存されたデータを含むために修正されます。これにより元の DB データはツリーで使用可能となります。
DB の主キーは通常、自動インクリメントです。この場合、新しい行がテーブルに追加され、追加された行の主キー列は自動的にインクリメントされます。 MobileTogether Designer では、主キーからテーブルが取得されると、自動インクリメント情報が自動的に取得され[ページ ソース] ペインに表示されます(下のスクリーンショット参照)。
この情報の自動取得が成功しなかった場合、切り替えコマンドを含むツリー ノードのコンテキスト メニューによりノードに正確な注釈をつけることができます (下のスクリーンショット参照)。
主キー列が自動インクリメントでない場合、追加された行の新しい主キーの値は XQuery 式を使用して自動的に生成されなければなりません。これは、主キー列を編集することができないからです。 XQuery 式は、主キーノードのコンテキストメニューコマンド [ページのロード時に存在することを確認 (XPath 値)] を使用して挿入されます。下の例では、次の XQuery 式を使用して新しい値が主キー @id のために生成されます:
let $all := $DB1/DB/RowSet/Row/@id
let $ids := remove($all, index-of($all, ""))
let $id := if (empty($ids)) then 1 else max($ids) + 1
return $id