連載
» 2014年11月12日 16時33分 公開

連載:カンタンWebアプリ開発ツール「Forguncy」の実力を探る:第3回 テーブルを作ってみよう(2) (3/4)

[かわさきしんじ,著]

詳細テーブルの作成

 「部署名表」テーブルと「内線番号表」テーブルは親子関係を持つ(参照される側の「部署表」テーブルが親、参照する側の「内線番号表」テーブルが子)。このとき、子となるテーブル(「内線番号表」テーブル)のことを詳細テーブルという。

 Forguncyでは、このような親子構造を持ったテーブルもある程度自動的に生成可能だ。まずは適当なページで以下のようにテキストボックスとリストビューを用意する。

通常のテーブルと詳細テーブルを生成させるための準備 通常のテーブルと詳細テーブルを生成させるための準備
  (1) 親となるテーブルのフィールドとなる。
  (2) リストビューの行テンプレートでセル型を指定した部分が、詳細テーブルのフィールドとなる。

 テーブルがない状態で、リストビューを作成するにはリボンの[ホーム]タブの右端の方にある[リストビューとして設定]ボタンを使用する。このとき、必要なテーブルはまだ存在しないので、[テーブルの選択]ダイアログでは[(なし)]を選択する。

テーブルには[(なし)]を指定する テーブルには[(なし)]を指定する

 その後、テーブルのフィールドとして生成したい要素をリストビューの行テンプレートに列記していく。行テンプレートの各要素は生成するフィールドの型に合わせて、セル型を設定する。ここではフィールドは全てテキストを格納するので、テキストボックスにしている。どのセル型からどの種類のフィールドが生成されるかについてはForguncyのドキュメント「ページから詳細テーブルを作成する」を参照のこと。

 また、親となるテーブルが持つフィールドは行テンプレートに含める必要はないことに注意しよう。親となるテーブルに生成するフィールドは、リストビューとは別に用意したセル型から生成される。以下の例では一番上のテキストボックスから「部署名表」テーブルを、リストビューから「内線番号表」テーブルを作成することになる。

必要なフィールドを列記していく 必要なフィールドを列記していく
ここでは、部署は親となる通常のテーブルに含まれるので、これを行テンプレートに含める必要はない。

 なお、上では「名前」「ふりがな」などとテキストボックスにテキストを入力しているが、筆者が試したところでは、特にテキストを入力する必要はない(生成されるフィールドを指定する画面で、自分でこれらの要素を指定する必要がある*2)。生成したいフィールドの数と同じだけ、ページ/行テンプレートにテキストボックスなどを配置すれば十分だ。とはいえ、必要な数のフィールドを行テンプレートに設定したかを確認するのであれば、このようにテキストを入れておくのがよいだろう。

*2 同じリストビューからテーブルを何度も生成する場合には、2回目以降のテーブル生成時に、リストビューの行テンプレートで指定したテキストが生成フィールド名として流用されるが、そのようなことはあまりないと思われる。


 用意ができたらリボンの[作成]タブにある[ページからテーブルの生成]ボタンをクリックする。

[テーブル名]に「親となるテーブルの名前」を指定し、[生成するページ]にある4つのチェックボックスを必要に応じてオン/オフし、[次へ]ボタンをクリック
[テーブル名]に「親となるテーブルの名前」を指定し、[生成するページ]にある4つのチェックボックスを必要に応じてオン/オフし、[次へ]ボタンをクリック
フィールド名を指定したら[完了]ボタンをクリック
フィールド名を指定したら[完了]ボタンをクリック

生成するフィールドの名前を指定
  (1) [テーブル名]には生成される2つのテーブルのうち、親となるテーブルの名前を指定する。
  (2) チェックボックスをチェックすると、親となるテーブルに関連したページを生成してくれる(通常のテーブルの生成とは異なり、ここではリストビューを使用しているためか、テーブルの生成に使用したページが登録ページとなることはない)。
  (3) 親となるテーブルのフィールド。
  (4) 詳細テーブルのフィールド。


 ここで行う作業そのものはすでに説明したものと変わらない。だが注意すべき点はある。一番大きな違いはすでに述べた通り、リストビュー(の行テンプレート)から詳細テーブルが、それ以外のセル型から親となるテーブルが生成されることだ。

 次に[ページからテーブルの生成]ダイアログの最初の画面では生成するテーブルの指定が1つしかないことだ。このページからテーブルが2つ生成されるが、ここで指定するのは親となるテーブルの名前だ。詳細テーブルには親となるテーブルの名前に「_詳細テーブル」が付加された名前が付けられる。

 次に自動生成されるページを指定するチェックボックスは、ここでは使用しないことをお勧めする。筆者が試したところでは、生成されるのは親となるテーブルに関連したページのみであり、どのみち、詳細テーブルを操作するためのページはこの後で生成あるいは作成する必要があるからだ。ここではチェックは全て外して、必要に応じてテーブルからページを生成することにした(図の説明で述べた通り、詳細テーブルを生成する場合には、テーブル生成に利用したページは登録ページにはならないようだ)。

 2つ目の画面でフィールド名を指定し、最後に[完了]ボタンをクリックすると、テーブル(とページの自動生成を行う場合は各種ページ)が生成される。

自動生成されたテーブル 自動生成されたテーブル

 詳細テーブルには、行テンプレートに指定したフィールド以外に、「MasterID」というフィールドが生成される。これが親となるテーブルとリンクするようになっている(先ほどの例で作成した「内線番号表」テーブルの「部署ID」フィールドに相当)。

 この後、各テーブルでその名前を変更したり、初期データを入力したり、フィールドの型を間違えていた場合にはこれを修正したりといった作業を行えば、テーブルは完成だ。ここでは詳細テーブルの名前を「内線番号表」に、また「MasterID」フィールドのデータ型をリボンの[テーブルツール]タブを利用して[整数]に直しておく([テーブルツール]−[フィールド]タブの[プロパティ]ペインにデータ型を指定するドロップダウンがある)。これら2つのテーブルはこの後で利用する。

マスター画面と詳細画面

 通常のテーブルと詳細テーブルは、今見たような「部署」−「その部署に所属する人」のデータという構造を形成するが、これをページで表示するには、リストビューを使ってマスター画面詳細画面を作成することになる。なお、以下ではマスター画面のデータソースとなるテーブル(とは、これまでに「親となるテーブル」と述べていたものだ)をマスターテーブルと呼ぶことにする(詳細画面のデータソースとなるテーブルは上記の「詳細テーブル」だが、リボンにはリストビューを詳細画面として利用するための[詳細テーブルとして設定]ボタンがある。意味するところは似ていて以下では両者の意味で「詳細テーブル」という用語が出てくるので注意すること。詳細画面で済む場面ではそちらを使うことにする)。

 以下は、上で作成した「部署名表」テーブルの内容をマスター画面に、「内線番号表」テーブルの内容を詳細画面に表示したものだ。

マスター画面と詳細画面 マスター画面と詳細画面
上のリストビュー(マスター画面)で選択した部署に属する人の内線番号が下のリストビュー(詳細画面)に表示される。

 マスター画面は通常のリストビューを配置するだけだが、リストビューを詳細画面とする場合にはリボンの[リストビューツール]−[デザイン]タブを使用する。このタブの左端の方に[詳細テーブルとして設定]ボタンがあるので、詳細画面として使用するリストビューを選択して、このボタンをクリックする。

詳細画面にするリストビューを選択して[詳細テーブルとして設定]ボタンをクリック
詳細画面にするリストビューを選択して[詳細テーブルとして設定]ボタンをクリック
詳細画面の設定
詳細テーブルから参照するマスターテーブルのフィールド、マスターテーブル、詳細テーブルでマスターテーブルとリンクさせるフィールドを指定する

詳細画面の設定
  (1) 親となるテーブルの内容を表示するリストビュー。
  (2) 詳細画面として利用するリストビュー。これを選択する。
  (3) [リストビューツール]−[デザイン]タブにある[詳細テーブルとして設定]ボタンをクリックする。
  (4) [MasterID]を指定する。これは詳細テーブル側で親となるテーブルとリンクさせるフィールド。
  (5) リンク対象のテーブルを選択する。ここでは「部署名表」テーブル。
  (6) [ID]を選択する。これはマスターテーブル側で詳細テーブルとリンクさせるフィールド。


 これにより、マスター画面で特定のレコードを選択すると、その詳細が表示されるようになる。最後に、今回説明した事柄をおさらいしながら、内線番号表をもう一度作ってみよう。

Copyright© Digital Advantage Corp. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。