以下、図面を参照して本発明の実施形態について説明する。
前半に、ページの作成及び物件データの一括割り付けについて説明し、後半に、一括割り付けが終了した後に行われる変更(セル区分変更、小組テンプレート変更及び物件データ変更)及び移動(物件データ移動)の処理について説明する。
なお、ページの作成及び物件データの一括割り付け並びに変更及び移動は、コンピュータにこれらの方法を行わせるためのコンピュータプログラムをコンピュータが読み込んで、実行することにより行われる。
[ページの作成及び物件データの一括割り付け]
ページの作成とは、指定されたページにページテンプレート及び小組テンプレートを割り付けることである。この割付が行われたページを図1に示す。物件データの一括割り付けとは、指定範囲にある物件データを割付けるべき各小組テンプレートに各物件データを割り付けることである。一括割り付けが行われたページを図2に示す。なお、見出し小組テンプレートには物件データが割付けられず、見出し小組テンプレートは、次のセル等(見出し小組のあるセルからn番目のセル(n=1、2、3、…))に割付けられている物件データを利用する。
まず、ページの作成及び物件データの一括割り付けをするために用いる図3及び4に示す諸テーブルについて説明する。これらの諸テーブルは、ハードディスクドライブ等のコンピュータ読み取り可能な記録媒体に記録される。
「カタログテーブル」51の列は、「カタログID」、「カタログ名」及び「物件/小組関連付けモード」である。「カタログID」は主キーであり、「カタログ名」は、例えば、物件雑誌の名称等である。また、「物件/小組関連付けモード」は、物件データを移動する場合に、小組テンプレートも物件データに付随して移動するか否かを示すものである。この値が「1」である場合には、物件データを移動する場合に、小組テンプレートも物件データに付随して移動し、この値が「0」である場合には、物件データを移動しても、小組テンプレートは移動せずに、元の場所に留まる。オペレータは、カタログ全体に対してこの値を決定する。
「ページテーブル」52の列は、「カタログID」、「ページID」及び「ページ区分」である。本の見開き2ページ、又は見開きでない場合の単ページに対して「ページテーブル」52の1レコードが割り付けられる。「ページ区分」は、単ページであるか又は見開きページであるかの区分を表す。「カタログID」及び「ページID」より構成される連結キーが主キーである。「カタログテーブル」51と「ページテーブル」52の間には、「カタログテーブル」51の「カタログID」と「ページテーブル」52の「カタログID」により1対多のリレーションが付けられる。
「ページ属性テーブル」53の列は、「カタログID」、「ページID」、「ページ番号」、「ページ種類」、「ページサイズ」、「ページ高さ」及び「ページ幅」である。1ページに対して1レコードが割り付けられる。「ページ種類」は、ページが左ページ、右ページ及び単ページのうちの何れであるかを示す。「ページ種類」、「ページサイズ」、「ページ高さ」及び「ページ幅」はページ属性情報である。但し、ページ属性情報はこれらに限定されるものではない。「カタログID」、「ページID」及び「ページ番号」より構成される連結キーが主キーである。「ページテーブル」52と「ページ属性テーブル」53の間には、「ページテーブル」52の「カタログID」及び「ページID」と「ページ属性テーブル」53の「カタログID」及び「ページID」により1対多(より具体的には1対1又は1対2)のリレーションが付けられる。
「ページエリアテーブル」54の列は、「カタログID」、「ページID」、「エリアID」、「ページ番号」、「ページ種類」、「エリア原点X」、「エリア原点Y」、「エリア高さ」、「エリア幅」、「小組配置方向」、「コラム数横」、「コラム数縦」、「コラム間隔横」、「コラム間隔縦」及び「基本小組テンプレートID」である。1エリアに対して1レコードが割り付けられる。エリアは、1ページに1つ以上設けられる。図1の例では、1ページに1エリアが設けられている。特許文献3には、1ページに複数のエリアを設けた例が記載されている。また、1つのエリアには1つ以上の小組が設けられる。特許文献3には、1エリアに複数の小組を設ける例が記載されている。「小組配置方向」は、エリア内で小組を縦方向に配置するか又は横方向に配置するかを示す。「基本小組テンプレートID」は、そのエリアでディフォルトで用いる小組のIDである。自動割り付けが行われた直後においては、ディフォルトの小組が用いられる。「ページ種類」、「エリア原点X」、「エリア原点Y」、「エリア高さ」、「エリア幅」、「小組配置方向」、「コラム数横」、「コラム数縦」、「コラム間隔横」、「コラム間隔縦」及び「基本小組テンプレートID」がエリア属性情報である。但し、エリア属性情報はこれらに限定されるものではない。「カタログID」、「ページID」及び「エリアID」より構成される連結キーが主キーである。「ページテーブル」52と「ページエリアテーブル」54の間には、「ページテーブル」52の「カタログID」及び「ページID」と「ページエリアテーブル」54の「カタログID」と「ページID」により1対多のリレーションが付けられる。「ページ属性テーブル」53と「ページエリアテーブル」54の間には、「ページ属性テーブル」53の「カタログID」、「ページID」及び「ページ番号」と「ページエリアテーブル」54の「カタログID」、「ページID」及び「ページ番号」により1対多のリレーションが付けられる。
「ページエリアセルテーブル」55の列は、「カタログID」、「ページID」、「エリアID」、「セル順番号」、「セル区分」及び「小組テンプレートID」である。1セルに対して1レコードが割り付けられる。「セル順番号」は、エリア内におけるセルの順番号である。従って、図1の例では、1つの「エリアID」に対して1〜8の「セル順番号」がある。従って、1つの「カタログID」、「ページID」及び「エリアID」の組合せに対し8レコードが設けられる。「セル区分」は、「割付け」、「見出し」及び「空き」のうちの何れかの値をとる。「セル区分」が「割付け」である場合には、当該セルが物件データを割り付けられるセルであることを示し、「セル区分」が「見出し」である場合には、当該セルが固定見出し小組テンプレートが割付けられるセルであることを示し、「セル区分」が「空き」である場合には、当該セルが空きセルであることを示す。固定見出し小組テンプレートが割付けられるセルの「セル区分」が「見出し」であるのに対し、浮動見出し小組テンプレートが割付けられるセルの「セル区分」は、「割付け」である。「小組テンプレートID」は、実際にセルに割り付けられた小組のIDである。「カタログID」、「ページID」、「エリアID」及び「セル順番号」より構成される連結キーが主キーである。「ページエリアテーブル」54と「ページエリアセルテーブル」55の間には、「ページエリアテーブル」54の「カタログID」、「ページID」及び「エリアID」と「ページエリアセルテーブル」55の「カタログID」、「ページID」及び「エリアID」により1対多のリレーションが付けられる。
「ページエリアセルデータテーブル」56の列は、「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」、「割り付け領域ID」及び「割り付け済みデータID」である。1つの物件に対して1レコードが割り付けられる。従って、図1の例では、1ページに1エリアがあり、1ページに割り付けられるべき物件データの数はレイアウト上は8に制限されているが、データベースから抽出した後には12であるので、1つの「カタログID」、「ページID」及び「エリアID」の組合せに対し12レコードが設けられ、それぞれのレコードの「エリア内レコード順番号」が1〜12となる。「エリア内レコード順番号」は割り付け時に決定され、それ以降変えられることはない。「セル順番号」は、セルが割り付けられた物件について、そのセルの「ページエリアセルテーブル」55における「セル順番号」と等しくなり、セルが割り付けられなかった物件(すなわち、あふれた物件)については、NULLとなる。「セル順番号」がNULLである物件は、あふれた物件であるのでレイアウトビューには表示されないが、データシートビューで、例えば黄色のレコードとして表示される。「カタログID」、「ページID」、「エリアID」及び「エリア内レコード順番号」より構成される連結キーが主キーである。「ページエリアテーブル」54と「ページエリアセルデータテーブル」56の間には、「ページエリアテーブル」54の「カタログID」、「ページID」及び「エリアID」と「ページエリアセルデータテーブル」56の「カタログID」、「ページID」及び「エリアID」により1対多のリレーションが付けられる。「ページエリアセルテーブル」55と「ページエリアセルデータテーブル」56の間には、「ページエリアセルテーブル」55の「カタログID」、「ページID」、「エリアID」及び「セル順番号」と「ページエリアセルデータテーブル」56の「カタログID」、「ページID」、「エリアID」及び「セル順番号」により1対1のリレーションが付けられる。但し、あふれ物件がある場合には、「ページエリアセルテーブル」55のレコードに対応付けられない「ページエリアセルデータテーブル」56のレコード(「セル順番号」がNULLのレコード)がある。このような「セル順番号」がNULLのレコードにおいても、「割り付け済みデータID」はNULLではなく、あふれた物件の有効なIDを有する。「割り付け領域ID」は、カテゴリ毎に異なり、当該カテゴリに対応する「割り付け領域テーブル」57のレコードの「割り付け領域ID」と等しい。
「割り付け領域テーブル」57の列は、「割り付け領域ID」、「改頁/改エリア/改段区分」及び「頁数/エリア数/段数」である。「改頁/改エリア/改段区分」は、改ページ、改エリア又は改段の区分を表す。「頁数/エリア数/段数」は、区分が改ページであって1カテゴリに割り付けるページ数が指定されている場合には、そのページ数を表わし、区分が改エリアであって1カテゴリに割り付けるエリア数が指定されている場合には、そのエリア数を表わし、区分が改段であって1カテゴリに割り付ける段数が指定されている場合には、その段数を表す。「割り付け領域ID」が主キーである。「ページエリアセルデータテーブル」56と「割り付け領域テーブル」57の間には、「ページエリアセルデータテーブル」56の「割り付け領域ID」と「割り付け領域テーブル」57の「割り付け領域ID」により多対1のリレーションが付けられる。
「割り付け済みデータテーブル」58の列は、「割り付け済みデータID」、「データ区分」、「物件ID」及び「小組テンプレートID」である。「割り付け済みデータID」は、カタログに割り付けられた物件又は見出しのデータ(あふれたものを含む)のIDであり、割付けが行われる度に増加する値を有する。「データ区分」は、当該セルで利用するデータが物件データであるのか、浮動見出しデータであるのか、又は、浮動空きであるのかの区分を示す。「物件ID」は、「データ区分」が「物件」である場合には、カタログ(物件雑誌等)に掲載するべき物件データを格納する物件データベースの「物件テーブル」における各物件のIDである。また、「物件ID」は、「データ区分」が「見出し」である場合には、NULLである。
「小組テンプレートID」は、「データ区分」が「物件」である場合には、「物件ID」で特定される物件を表示又は印刷するために利用する小組テンプレートのIDを示す。また、「小組テンプレートID」は、「データ区分」が「見出し」である場合には、当該セルで利用する浮動見出しテンプレートのIDを示す。一括割付けの際に、同一の値が「割付け済みデータテーブル」58の「小組テンプレートID」及び「ページエリアセルテーブル」55の「小組テンプレートID」に挿入される。この様に、「小組テンプレートID」は一括割付けの際に決定される。そして、「割付け済みデータテーブル」58の「小組テンプレートID」は、それぞれの物件データ又は浮動見出しで利用されることをオペレータが意図した小組テンプレートのIDとして扱われるため、オペレータが小組テンプレートを個別に変更することが無い限り、変更されることはない。オペレータにより物件データや浮動見出しの移動が行われた場合であっても、「割付け済みデータテーブル」58の「小組テンプレートID」は、変更されない。一方、オペレータにより物件データや浮動見出しの移動が単に行われたのみの場合、「ページエリアセルテーブル」55の「小組テンプレートID」は、変更されない。従って、一般に、移動先のセルにおいて、「ページエリアセルテーブル」55の「小組テンプレートID」は、「割付け済みデータテーブル」58の「小組テンプレートID」と異なることとなる。ここで、オペレータが利用されることを意図している小組テンプレートは、「割付け済みデータテーブル」58の「小組テンプレートID」により特定される小組テンプレートであることが多いと考えられる。一方、一括割付け及び編集を行った後に、XML電子文書及びXSLT電子文書を作成する際には、各セルで利用する小組テンプレートは、「ページエリアセルテーブル」55の「小組テンプレートID」を参照して決定される。従って、後述するように、「カタログテーブル」51の「物件/小組関連付けモード」が「1」である場合であって、物件データや浮動見出しの移動が行われた際に、移動先において「ページエリアセルテーブル」55の「小組テンプレートID」と「割付け済みデータテーブル」58の「小組テンプレートID」が一致していない場合には、「割付け済みデータテーブル」58の「小組テンプレートID」を「ページエリアセルテーブル」55の「小組テンプレートID」に代入する。「物件/小組関連付けモード」が「0」である場合には、「ページエリアセルテーブル」55の「小組テンプレートID」は変更されない。常に物件データに随伴して小組テンプレートが移動することとせずに、物件データのみが移動するように「物件/小組関連付けモード」が「0」である場合も用意したのは、オペレータが場合によっては、物件データのみが移動することを望む場合もあるからである。但し、以下の説明では、物件データに随伴して小組テンプレートが移動する場合についての説明をするが、物件データに付随して小組テンプレートが移動しない場合についての説明を省略する。但し、物件データに付随して小組テンプレートが移動しないようにするためには、物件データの移動後に、当該セルにおいて「ページエリアセルテーブル」55の「小組テンプレートID」と「割り付け済みデータテーブル」58の「小組テンプレートID」とが一致しない場合であっても、その不一致を放置するのみでよい。
「割り付け済みデータテーブル」58は、あふれた物件データを含めカタログに割り付けられた全ての物件についてのレコードを有する。また、「割り付け済みデータテーブル」58は、あふれた浮動見出し及び浮動空きを含めカタログに割り付けられた全ての浮動見出し及び浮動空きについてのレコードを有する。「ページエリアセルデータテーブル」56と「割り付け済みデータテーブル」58との間には、「ページエリアセルデータテーブル」56の「割り付け済みデータID」と「割り付け済みデータテーブル」58の「割り付け済みデータID」により1対1のリレーションが付けられる。
「割り付け済みデータテーブル」58のレコードは、物件割付けが行われるときに生成される。また、後述する様に、物件データ変更処理(ステップS415)で書き換えられる。
レイアウトビューやデータシートビューで物件データの入れ替えが行われると、「ページエリアセルデータテーブル」56の「割り付け済みデータID」が入れ替えられる。また、「カタログテーブル」51の「物件/小組関連付けモード」の値が「1」である場合には、上述したように、「ページエリアセルデータテーブル」56の「小組テンプレートID」も入れ替えられる。
あふれデータについては、「ページエリアセルデータテーブル」56のセル順番号はNULLであり、レイアウトビューには表示されないが、データシートビューにはあふれデータとして、例えば黄色で、表示される。オペレータは、割り付けられたデータとあふれデータをデータシートビューで入れ換えることができる。この場合には、あふれデータについての「ページエリアセルデータテーブル」56のレコードの「割り付け済みデータID」と割り付け済みデータについての「ページエリアセルデータテーブル」56のレコードの「割り付け済みデータID」を入れ換える。
次に、本実施形態の動作について説明する。
図5を参照すると、大まかには、ページ作成(ステップS101)、及びその後の一括割り付け処理(ステップS103)に分けられる。
次に、ページの作成のステップS101の詳細について説明する。
まず、図6(a)に示すメニューの「ページ作成」の項目400がオペレータにより選択されたならば、図7に示す「ページ作成」ダイアログ画面501を表示する。オペレータは、ページ作成をする開始ページ及び終了ページをテキストボックス503、505に入力し、作成するページに適用するページテンプレートをコンボボックス507で選択し、「OK」ボタン509を押す。こうすることにより、ページ番号とページテンプレートの選択を入力する(ステップS111)。
ページテンプレートには、ページについての情報(ページサイズ、ページ高さ、ページ幅、ページ種類)、ページで用いるエリアについての情報(エリア番号、エリアサイズ(高さ、幅)、エリア位置(X方向、Y方向)、エリア内小組数(X方向、Y方向)、小組間隔(X方向、Y方向)、小組配置方向)及び各エリアで用いることが可能な小組テンプレート及びディフォルトで用いる小組テンプレートについての情報(小組テンプレートID)が記述されている。
次に、ステップS111で入力したページ番号とページテンプレートを基に、「ページテーブル」52にレコードを追加し(ステップS113)、「ページ属性テーブル」53にレコードを追加し(ステップS114)、「ページエリアテーブル」54にレコードを追加し(ステップS115)、「ページエリアセルテーブル」55にレコードを追加する(ステップS117)。これで、物件データを割り付けるためのページの構造が構築されたことになる。
次に、一括割り付け処理S103の詳細について説明する。
図8に示す「割付けデータ選択パネル」601は常に表示されている。あるページのあるエリアのあるセルが選択されている状態で、「割付けデータ選択パネル」601を利用することにより、一括割付け又は個別割付けをすることができる。「カテゴリ」のコンボボックス602でフィルタが選択され、「割付け範囲選択」のツリービュー603で割付け範囲が選択されると、「フォルダ内データ」のテーブル604には、選択されたフィルタ及び選択された範囲に対応した物件データが表示される。ここで、特定の物件データを選択せずに「割り付ける」ボタン605が押下されると、テーブル604に表示された物件データが一括割り付けされる。一方、特定の物件データを選択してから「割付ける」ボタン605が押下されると、選択された物件データのみが割付けられる。
一括割付けを行う場合には、例えば、オペレータは、コンボボックス602で、フィルタとして「地域別インデックス」フィルタを選択し、ツリービュー603で「九州・沖縄」のフォルダを選択する。「地域別インデックス」フィルタは、例として3階層のフォルダを有し、例えば、第1階層には、「九州・沖縄」フォルダがあり、「九州・沖縄」フォルダの下の第2階層には、「福岡」フォルダ、「長崎」フォルダ、「熊本」フォルダ、「大分」フォルダ、「宮崎」フォルダ、「鹿児島」フォルダ及び「沖縄」フォルダがあり、「福岡」フォルダの下の第3階層には、「原鶴温泉」フォルダ及び「小倉」フォルダがある。なお、「地域別インデックス」フィルタのルートを第0階層とみなす。
「範囲指定する」のチェックボックス606をチェックした場合には、範囲指定をすることができる。範囲指定をするとは、一括割付けをしていく過程で指定されたセルに到達したときに、コンボボックス602及びツリービュー603で指定された範囲の物件データが残っているならば、残りの物件データをあふれデータとして扱うようにすることをいう。チェックボックス606をチェックした場合には、終了ページ、終了エリア及び終了セルをテキストボックス607、608及び609にそれぞれ入力する。なお、範囲の最初のセルは、ページ表示画面で現在選択されているセルである。
「小組テンプレートを自動選択する」のチェックボックス610をチェックした場合には、小組テンプレートを自動選択することができる。小組テンプレートを自動選択するとは、物件データについては、物件データの内容に応じて、利用する物件小組テンプレートを変化させ、見出しについては、見出しの次の物件データの内容に応じて、利用する見出し小組テンプレートを変化させることをいう。なお、チェックボックス610をチェックしない場合には、小組テンプレートの自動選択は行われず、当該セルのディフォルトの小組テンプレートが無条件に利用される。
小組テンプレートの自動選択をするためには、図4に示す「小組テンプレート選択条件テーブル」59を利用する。図4を参照すると、「小組テンプレート選択条件テーブル」59は、「カタログID」、「フィルタID」、「条件タイプ」、「順番号」、「小組テンプレートID」、「条件設定フラグ」、「条件1テーブルID」、「条件1テーブル列ID」、「条件1演算子」、「条件1条件値」、「条件1−2演算子」(中略)、「条件4テーブルID」、「条件4テーブル列ID」、「条件4演算子」及び「条件4条件値」の列を有する。1つのカタログを作成する場合に、大量の物件データを格納する物件データベースからカタログに掲載するべき物件データを抽出するためのフィルタを切り換えて利用することができる。従って、「条件タイプ」以降の列の内容をどのカタログのどのフィルタに適用するかを決定するために、「カタログID」及び「フィルタID」の列を設けている。「条件タイプ」は、条件を物件データに対して適用するのか又は見出しに対して適用するのかを示す。「順番号」は、複数の条件を同一の物件データに対して設定した場合の当該条件の優先順位を示す。なお、「小組テンプレート選択条件テーブル」59の1レコードは1つの条件を表す。従って、複数の条件を設定する場合には、複数のレコードを利用する。「小組テンプレートID」は、条件が満たされた場合に選択する小組テンプレートのIDを示す。「条件設定フラグ」は、条件を設定する場合には「1」の値を有し、条件を設定しない場合には「0」の値を有する。チェックボックス610がチェックされた場合には、「1」が設定され、そうでない場合には、「0」が設定される。条件を設定する場合には、「条件1テーブルID」以降の内容を利用する。条件を設定しない場合には、「条件1テーブルID」以降の内容は用いず、無条件に「小組テンプレートID」で指定された小組テンプレートを利用する。条件1から条件4までの4つの条件を設定することができ、これらの条件は、「条件1−2演算子」、「条件2−3演算子」及び「条件3−4」に設定された演算子(AND(論理積)又はOR(論理和))により論理結合される。条件1乃至4のうちの条件1を例に取り説明すると、「条件1テーブルID」及び「条件1テーブル列ID」は、条件1で利用するテーブルのID及びそのテーブルの列のIDを指定する。ここでいうテーブルのID及び列のIDとは、物件データベースに格納されている図9に示すような物件テーブル、参照テーブル及び繰返しテーブルの各々に付されているID及び各テーブルの各列に付されているIDである。特許文献1乃至3に図9に示す諸テーブルと同様なテーブルについての記載があるので、その説明を省略する。なお、図9に示す諸テーブルは、あくまでも例であり、作成するカタログによってテーブルの数及び種類並びに各テーブルの列の数及び種類は異なる。「条件1演算子」には、「データあり」、「データなし」等の図10に示す「条件設定追加」ダイアログ202で選択した演算子が設定される。「条件1条件値」には、「博多」、「ホテル」等の「条件設定追加ダイアログ」202で入力した文字列が設定される。
「小組テンプレートを自動選択する」のチェックボックス610がチェックされ、「小組テンプレート選択条件…」ボタン611が押下されたならば、図11に示す「小組テンプレート選択条件の設定」パネル621を表示する。初期状態においては、「小組テンプレート選択条件」エリア623には何も記述されていない。「条件追加…」ボタン622が押下されたならば、図10に示す「条件設定追加」ダイアログ630を表示する。
「条件設定追加」ダイアログ630では、条件及び条件が満たされた場合に利用する小組テンプレート又は、条件を設定しない場合には、無条件に利用する小組テンプレートを設定することができる。「条件設定追加」ダイアログ630での設定が終了し、「OK」ボタン631が押下されると、図11に示す「小組テンプレート選択条件の設定」パネル621に戻り、この画面の「小組テンプレート選択条件」エリア623には、「選択条件追加」ダイアログ630で設定した内容を表す行が追加される。オペレータは必要な数だけ「選択条件追加」ダイアログ630を利用して条件を設定する。その後、「OK」ボタン624が押下されると、設定された全ての条件を表す1乃至複数のレコードを「小組テンプレート選択条件テーブル」59に追加する。
図10を参照すると、「条件を設定する」のチェックボックス629がチェックされた場合には、「選択条件」の枠632の内部が有効となり、枠632で設定された条件が満たされた場合に、「選択する小組テンプレート」のコンボボックス633で選択された小組テンプレートを選択するようになる。一方、「条件を設定する」のチェックボックス629がチェックされなかった場合には、「選択条件」の枠632の内部は無効となり、無条件に「選択する小組テンプレート」のコンボボックス633で選択された小組テンプレートを選択するようになる。
「条件項目」のコンボボックス634では、物件テーブルの全ての列(項目)、参照テーブルの全ての列(項目)及び繰返しテーブルの全ての列(項目)のうちの1の列(項目)を選択することができる。「演算子」のコンボボックス635では、図10の符号636及び637で示すプルダウンメニューに示すように、「データあり」、「データなし」、「文字列を含む」等の演算子を選択することができる。「演算子」のコンボボックスで選択することができる演算子は、条件項目で選択された項目が文字型である場合には、プルダウンメニュー636に含まれるものであり、数値型である場合には、プルダウンメニュー637に含まれるものである。「条件値」のテキストボックス638では、条件値を入力することができる。「結合論理」のコンボボックス639では、「AND(論理積)」又は「OR(論理和)」を選択することができる。
「条件設定追加」ダイアログ630で追加された条件及び小組テンプレートの組は、追加された順に「小組テンプレート選択条件」エリア623に表示され、追加された順の優先順位を有するが、「上へ移動」ボタン625及び「下へ移動」ボタン626を利用することにより、表示順序及び優先順位を変更することができる。例えば、2つの組がある場合には、1つ目の組の条件が満たされた場合には、1つ目の組の小組テンプレートが選択され、1つ目の組の条件が満たされない場合であって、2つ目の組の条件が満たされる場合には、2つ目の組の小組テンプレートが選択され、1つ目の組の条件及び2つ目の組の条件が満たされない場合には、ディフォルトの小組テンプレートが選択される。但し、2つ目の組の条件を「無条件」とすることにより、ディフォルトの小組テンプレートが選択されることを回避することが可能となる。
図8に戻り、「ブレイク処理を行う」のチェックボックス612をチェックした場合には、ブレイク処理を行うことができる。ブレイク処理には、「浮動見出し小組の挿入」及び「改ページ、改エリア又は改段」が含まれるが、両者又は一方のみを選択することができる。
「ブレイク処理を行う」のチェックボックス612がチェックされると、「ブレイク処理設定…」ボタン613が押下可能となる。「ブレイク処理設定…」ボタン613が押下されると、図12に示す「ブレイク処理の設定」パネル640を表示する。
「ブレイク処理の設定」パネル640では、ブレイク処理を行う箇所を、「タイミング」のコンボボックス641で階層を指定することにより選択することができる。例えば、フィルタが「地方」と「都道府県」の2階層構造を有する場合に、「階層2」を選択すると、物件データの都道府県が変化する箇所でブレイク処理を行うようになる。
「浮動見出し小組を挿入する」のチェックボックス642をチェックすると、ブレイク処理を行う際に浮動見出し小組を挿入することができる。すなわち、指定された階層の値が変化した場合に、変化前の物件データと変化後の物件データの間に浮動見出し小組を挿入することができる。「浮動見出し小組を挿入する」のチェックボックス642をチェックすると、「小組テンプレート選択条件設定…」ボタン643が押下可能となる。「小組テンプレート選択条件設定…」ボタン643が押下されると、図11に示す「小組テンプレート選択条件設定」パネル621を表示する。「小組テンプレート選択条件設定」パネル621及びこれから呼ばれる図10に示す「条件設定追加」ダイアログ630を用いた条件及び小組テンプレートの設定方法は、物件データの場合と同様であるので、この説明を省略する。但し、浮動見出し小組には、物件データが割付けられないので、「条件項目」のコンボボックス634で選択する項目としては、浮動見出し小組の次にある物件データの項目が利用され、この項目が条件の論理式に代入されることとなる。
また、「改ページ・改エリア・改段を行う」のチェックボックス644をチェックすると、ブレイク処理を行う際に改ページ、改エリア又は改段を行うようになる。改ページ、改エリア及び改段のうちの何れの処理を行うかについては、ラジオボタングループ645で指定する。また、改ページ(又は、改エリア、改段)を行う場合には、1カテゴリに割り当てるページ数(又は、エリア数、段数)を指定するのか否か、そして、指定する場合には、何ページ(又は、何エリア、何段)にするのかをコンボボックス646−1、646−2又は646−3を用いて指定することができる。1カテゴリーに割り当てるページ数(又は、エリア数、段数)が指定された場合であって、コンボボックス641で指定された階層の同一カテゴリー内の物件データが指定された数のページ(又は、エリア、段)に収りきらない場合には、あふれ処理を行うこととなる。
図8に示す画面での設定が終了し、「割り付ける」ボタンが押下されると、その設定内容に従って割付けを行う。
「割付けデータ選択」パネル601等を用いて上述の種々の設定が完了し、「割り付ける」ボタン605が押下されたならば、ステップS121の入力を完了する。
次に、処理モードが「改ページ処理モード」、「改エリア処理モード」、「改段処理モード」及び「非処理モード」のうちの何れであるかを判断し、処理モードが「改ページ処理モード」であれば(ラジオボタングループ645(図12)で改ページが選択されていれば)(ステップS123でYES)、「改ページ処理モード」で一括割り付けを行い(ステップS129)、処理モードが「改エリア処理モード」であれば(ラジオボタングループ645で改エリアが選択されていれば)(ステップS125でYES)、「改エリア処理モード」で一括割り付けを行い(ステップS131)、処理モードが「改段処理モード」であれば(ラジオボタングループ645で改段が選択されていれば)(ステップS127でYES)、「改段処理モード」で一括割り付けを行い(ステップS135)、処理モードが「非処理モード」であれば(「改ページ・改エリア・改段を行う」のチェックボックスがチェックされていなければ)(ステップS127でNO)、「非処理モード」で一括割付けを行う(ステップS136)。
ステップS129、S131、S135又はS136の一括割付け処理が終了したならば、割付け結果を画面に表示する(ステップS137)。この画面とは、例えば、図2に示すレイアウトビュー及び図13に示すデータシートビューである。
次に、改ページ処理モードでの一括割り付け処理(ステップS129)の詳細について説明する。
図14を参照すると、まず、割り付け開始ページに対応するページID及び現在のカタログIDを有するレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込む(ステップS141)。次に、開始ページに対応するページIDを有するレコードのうち最小のエリアIDのレコードを「ページエリアテーブル」54から読み込む(ステップS143)。次に、各カテゴリについてのステップS147〜S193の処理を全てのカテゴリについて繰り返す(ステップS145)。ここでいうカテゴリとは、コンボボックス641で選択された階層のカテゴリである。例えば、コンボボックス641で第2階層が改ページのタイミングとして指定されている場合には、各カテゴリとは、「福岡」、「長崎」、「熊本」等である。全てのカテゴリとは、「九州・沖縄」に含まれるカテゴリである。
ステップS147では、「割り付け領域テーブル」57にレコードを追加する。従って、各カテゴリ毎に「割り付け領域テーブル」57の1レコードが作成されることとなる。次に、あふれフラグをリセットする(ステップS149)。あふれフラグとは、1カテゴリに割り付けるページ数がコンボボックス646−1(図12)で指定されている場合に、そのページ数のページの全てのエリアの全てのセルへの物件データの割り付けが終了して、現在は、あふれた物件データのためのレコードを「ページエリアセルデータテーブル」56に追加すべきであることを指示するためのものである。従って、カテゴリを更新して物件データの割り付けを開始するので、あふれフラグをリセットする。
次に、現在のカテゴリの物件データを割り付ける最初のページの最初のエリアの最初のセルから物件データを割り付けるために、変数であるエリアID’を1に初期化し、変数であるセル順番号’も1に初期化する(ステップS150)。
次に、現在のカテゴリ内の全ての物件データについてステップS152〜S185の処理を繰り返す(ステップS151)。ステップS152〜S185の処理では、「ページエリアセルデータテーブル」56及び「割付け済みデータテーブル」58にレコードを追加する。
ステップS152では、現在の繰返しがステップS151の繰返しのうちの最初の繰返しであるか否かを判断する。最初の繰返しでなければ、ステップS155に進む。最初の繰返しであれば、浮動見出し小組挿入モードであるのか否か(チェックボックス642(図12)がチェックされているか否か)を判断する(ステップS153)。浮動見出し小組挿入モードでなければ、ステップS155に進む。
最初の繰返しであり、浮動見出し小組挿入モードである場合には(ステップS152及びS153でYES)、浮動見出し小組を挿入するためにステップS154を実行する。ステップS154では、「割り付け済みデータテーブル」58に浮動見出し小組についてのレコードを追加する。このレコードは、セルに割り付ける浮動見出し小組についても、あふれ浮動見出し小組についても作成するが、通常は、あふれ浮動見出し小組は生じていないので、セルに割り付ける浮動見出し小組についてのみ作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「見出し」であり、物件IDは、無効値(NULL)であり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に当該浮動見出し小組の次に割付けられるべき物件データを適用した結果選択される小組テンプレートのIDである。
ステップS155では、「割り付け済みデータテーブル」58に現在のカテゴリ内の現在の物件データについてのレコードを追加する。このレコードは、セルに割り付ける物件データについても、あふれ物件データについても作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「物件」であり、物件IDは、物件データベースの物件テーブル中の物件IDであり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に現在の物件データを適用した結果選択される小組テンプレートのIDである。
ここで、ステップS154及びS155で行われる小組テンプレートの自動選択について説明する。図15を参照すると、まず、現在選択されているカタログのカタログIDと現在選択されているフィルタのフィルタIDと現在選択されている条件タイプを有する全てのレコードを小組テンプレート選択条件テーブル59(図4)から検索する(ステップS701)。ここで、現在選択されている条件タイプは、ステップS154の場合には、「物件データ」であり、ステップS155の場合には、「見出し」である。次に、検索されたレコードについて、順番号の小さい順から、ステップS703を繰り返す(ステップS702)。ステップS703では、当該レコードの条件式に当該物件データを適用し、条件式の値が「真」となるかどうか判断する。「真」であれば、ステップS704に進む。ステップS704では、当該レコードに記述されているIDの小組テンプレートを選択する。ステップS701で検索された全てのレコードについてS703で条件式の値が「偽」であった場合には、当該セルが属するエリアのディフォルトの小組テンプレートを選択する(ステップS705)。
ステップS154又はS155の次のステップS156では、あふれフラグがセットされているか又はリセットされているかを判断する。セットされていなければ、ステップS157に進み、セットされていれば、ステップS161に進む。
ステップS157では、セルに割り付ける物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、セル順番号’である。従って、このレコードの「エリア内レコード順番号」と「セル順番号」は等しい。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。
ステップS157を実行した後、現在のカタログID、ページID、エリアID’、セル順番号’を有する「ページエリアセルテーブル」55のレコードの「小組テンプレートID」と直前に「割り付け済みデータテーブル」58に追加したレコードの「小組テンプレートID」を比較し(ステップS158)、一致していない場合には、前者に後者の値を書き込む(ステップS159)。ページ作成(ステップS101)を行った直後の「ページエリアセルテーブル」55の「小組テンプレートID」は、当該エリアでディフォルトで利用する小組テンプレートのIDとなっているが、ステップS158及びS159を行うことにより、「ページエリアセルテーブル」55の「小組テンプレートID」を、ステップS154又はS155において物件データ又は浮動見出し小組に対して自動選択した小組テンプレートのIDと等しくすることができる。ステップS158でNOである場合には、ステップS163に進み、ステップS159を実行した場合にも、ステップS163に進む。
ステップS161では、あふれ物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、NULLである。従って、セル順番号’は、ステップS151のループを繰り返す度に、物件データがあふれているいないにかかわらず1増加するので、このレコードの「エリア内レコード順番号」は、あふれが始まる前のセル順番号をあふれ後もカウントし続けたものとなる。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。ステップS161からは、ステップS163に進む。
図16を参照すると、ステップS163では、セル順番号’を1増加する。次に、現在のカタログID、現在のページID、現在のエリアIDを有する全てのレコードを「ページエリアセルテーブル」55から検索し、検索したレコードのセル順番号の最大値よりもセル順番号’が大きいか否かをみることにより、現在のページの現在のエリアの全てのセルへの物件データの割り付けが終了したか否かを判断する(ステップS165)。ステップS165の判断結果がNOであれば、現在のページの現在のエリアに物件データが割り付けられていないセルが残っているので、ステップS152に戻る。
ステップS165の判断結果がYESであれば、次のエリアに物件データを割り付けるために、エリアID’を1増加する(ステップS167)。
次に、現在のカタログID、現在のページIDを有する全てのレコードを「ページエリアテーブル」54から検索し、検索したレコードのエリアIDの最大値よりもエリアID’が大きいか否かをみることにより、現在のページの全てのエリアへの物件データの割り付けが終了したか否かを判断する(ステップS169)。ステップS169の判断結果がNOであれば、現在のページに物件データが割り付けられていないエリアが残っているので、新たなエリアの最初のセルに物件データを割り付けるために、セル順番号’を1に初期化し(ステップS171)、「ページエリアテーブル」54から、現在のカタログID、ページID、エリアIDを有するレコードを読み込む(ステップS173)。
ステップS169の判断結果がYESであれば、次のページに物件データを割り付けるために、変数ページ番号’を1増加する(ステップS175)。
次に、コンボボックス646−1に設定した1カテゴリに割り付けるページ数と同一の数だけ現在のカテゴリにおいてステップS175を行ったか否かを判断することにより、現在のカテゴリに割り付ける数のページへの物件データの割り付けが終了したか否かを判断する(ステップS177)。ステップS177の判断結果がNOであれば、現在のカテゴリの物件データを割り付けるべきページが残っているので、新たなページの最初のエリアの最初のセルに物件データを割り付けるために、エリアID’を1に初期化し、セル順番号’を1に初期化し(ステップS179)、その新たなページのページ番号に対応したページIDのレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込み(ステップS181)、カタログID、ページID、エリアIDが、それぞれ、現在のカタログID、現在のページID、1であるレコードを「ページエリアテーブル」54から読み込む(ステップS183)。
ステップS177の判断結果がYESであれば、現在のカテゴリにおいて、これ以上物件データの割り付けをすることができないので、あふれフラグをセットする(ステップS185)。
ステップS151のループが抜けたならば、次のカテゴリについての処理のための初期化を行うためにステップS187に進む。図17を参照すると、ステップS187では、次のカテゴリにおける物件データの割り付けを新たなページの最初のエリアの最初のセルから開始するために、ページ番号’を1増加し、エリアID’を1に初期化し、セル番号’を1に初期化する。
次に、チェックボックス606(図8)がチェックされていてページ範囲が指定されており、且つ、ステップS187で1増加した後のページが終了ページのテキストボックス607に設定した終了ページを超えているか否かを判断し(ステップS189)、そうであれば、割り付けを終了する。
ステップS189の判断結果がNOであれば、次のカテゴリにおける物件データの割り付けの準備として、ステップS187で更新した後のページ番号’に対応するページID及び現在のカタログIDを有するレコードを「ページテーブル」52、「ページ属性テーブル」53からそれぞれ読み込み(ステップS191)、カタログID、ページID、エリアIDが、それぞれ、現在のカタログID、現在のページID、1であるレコードを「ページエリアテーブル」54から読み込み(ステップS193)、現在のカテゴリについての処理を終了する。
非処理モードの動作(ステップS136)は、改ページモードの動作において、ステップS156、S161、S177及びS185を除いたものであるので、この説明を省略する。
次に、改エリア処理モードでの一括割り付け処理(ステップS131)の詳細について説明する。
図18を参照すると、まず、割り付け開始ページに対応するページID及び現在のカタログIDを有するレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込む(ステップS201)。次に、開始ページに対応するページIDを有するレコードのうち最小のエリアIDのレコードを「ページエリアテーブル」54から読み込む(ステップS203)。次に、各カテゴリについてのステップS207〜S259の処理を全てのカテゴリについて繰り返す(ステップS205)。
ステップS207では、「割り付け領域テーブル」57にレコードを追加する。従って、各カテゴリ毎に「割り付け領域テーブル」57の1レコードが作成されることとなる。次に、あふれフラグをリセットする(ステップS209)。あふれフラグとは、1カテゴリに割り付けるエリア数がコンボボックス646−2で指定されている場合に、そのエリア数のエリアの全てのセルへの物件データの割り付けが終了して、現在は、あふれた物件データのためのレコードを「ページエリアセルデータテーブル」56に追加すべきであることを指示するためのものである。従って、カテゴリを更新して物件データの割り付けを開始するので、あふれフラグをリセットする。
次に、現在のカテゴリの物件データを割り付ける最初のページの最初のエリアの最初のセルから物件データを割り付けるために、変数であるエリアID’を1に初期化し、変数であるセル順番号’も1に初期化する(ステップS210)。
次に、現在のカテゴリ内の全ての物件データについてステップS212〜S243の処理を繰り返す(ステップS211)。ステップS212〜S243の処理では、「ページエリアセルデータテーブル」56及び「割付け済みデータテーブル」58にレコードを追加する。
ステップS212では、現在の繰返しがステップS211の繰返しのうちの最初の繰返しであるか否かを判断する。最初の繰返しでなければ、ステップS215に進む。最初の繰返しであれば、浮動見出し小組挿入モードであるのか否か(チェックボックス642(図12)がチェックされているか否か)を判断する(ステップS213)。浮動見出し小組挿入モードでなければ、ステップS215に進む。
最初の繰返しであり、浮動見出し小組挿入モードである場合には(ステップS212及びS213でYES)、浮動見出し小組を挿入するためにステップS214を実行する。ステップS214では、「割り付け済みデータテーブル」58に浮動見出し小組についてのレコードを追加する。このレコードは、セルに割り付ける浮動見出し小組についても、あふれ浮動見出し小組についても作成するが、通常は、あふれ浮動見出し小組は生じていないので、セルに割り付ける浮動見出し小組についてのみ作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「見出し」であり、物件IDは、無効値(NULL)であり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に当該浮動見出し小組の次に割付けられるべき物件データを適用した結果選択される小組テンプレートのIDである。
ステップS215では、「割り付け済みデータテーブル」58に現在のカテゴリ内の現在の物件データについてのレコードを追加する。このレコードは、セルに割り付ける物件データについても、あふれ物件データについても作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「物件」であり、物件IDは、物件データベースの物件テーブル中の物件IDであり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に現在の物件データを適用した結果選択される小組テンプレートのIDである。
ここで、ステップS214及びS215で行われる小組テンプレートの自動選択は、ステップS154及びS155で行われるものと同様であるので、この説明を省略する。
ステップS214又はS215の次のステップS216では、あふれフラグがセットされているか又はリセットされているかを判断する。セットされていなければ、ステップS217に進み、セットされていれば、ステップS220に進む。
ステップS217では、セルに割り付ける物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、セル順番号’である。従って、このレコードの「エリア内レコード順番号」と「セル順番号」は等しい。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。
ステップS217を実行した後、現在のカタログID、ページID、エリアID’、セル順番号’を有する「ページエリアセルテーブル」55のレコードの「小組テンプレートID」と直前に「割り付け済みデータテーブル」58に追加したレコードの「小組テンプレートID」を比較し(ステップS218)、一致していない場合には、前者に後者の値を書き込む(ステップS219)。ページ作成(ステップS101)を行った直後の「ページエリアセルテーブル」55の「小組テンプレートID」は、当該エリアでディフォルトで利用する小組テンプレートのIDとなっているが、ステップS218及びS219を行うことにより、「ページエリアセルテーブル」55の「小組テンプレートID」を、ステップS214又はS215において物件データ又は浮動見出し小組に対して自動選択した小組テンプレートのIDと等しくすることができる。ステップS218でNOである場合には、ステップS221に進み、ステップS219を実行した場合にも、ステップS221に進む。
ステップS220では、あふれ物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、NULLである。従って、セル順番号’は、ステップS211のループを繰り返す度に、物件データがあふれているいないにかかわらず1増加するので、このレコードの「エリア内レコード順番号」は、あふれが始まる前のセル順番号をあふれ後もカウントし続けたものとなる。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。ステップS220からは、ステップS221に進む。
図19を参照すると、ステップS221では、セル順番号’を1増加する。次に、現在のカタログID、現在のページID、現在のエリアIDを有する全てのレコードを「ページエリアセルテーブル」55から検索し、検索したレコードのセル順番号の最大値よりもセル順番号’が大きいか否かをみることにより、現在のページの現在のエリアの全てのセルへの物件データの割り付けが終了したか否かを判断する(ステップS223)。ステップS223の判断結果がNOであれば、現在のページの現在のエリアに物件データが割り付けられていないセルが残っているので、ステップS212に戻る。
ステップS223の判断結果がYESであれば、現在のエリアが現在のページの最後のエリアであるか否かをみるために、エリアID’に1を加算したときに、現ページの最大エリアIDを超えるか否かを判断する(ステップS225)。ステップS225の判断結果がNOであれば、現在のページに物件データ未割り付けのエリアが残っているということになる。その場合には、全てのセルに対する物件データ割り付けが終了した現在のエリアが現カテゴリに割り付けられた最後のエリアであるか否かをみるために、コンボボックス646−2(図12)で1カテゴリに割り付けるエリア数が指定されており、且つ、コンボボックス646−2で指定した数のエリアへの物件データの割り付けが終了したか否かを判断する(ステップS227)。ステップS227の判断結果がNOであれば、まだ、物件データを割り付けるべきエリアが残っているので、次のエリアの最初から物件データを割り付けるために、エリアID’を1増加し、セル順番号’を1に初期化し(ステップS229)、「ページエリアテーブル」54から、現在のカタログID、ページID、エリアIDを有するレコードを読み込む(ステップS231)。
ステップS233の判断結果がYESであれば、物件データを割り付けるべきエリアが残っておらず、これ以降の物件データをあふれ物件データとして処理するために、あふれフラグをセットする(ステップS233)。
ステップS225の判断結果がYESであれば、現在のエリアが現在のページの最後のエリアであるということである。この場合、チェックボックス606(図8)で範囲指定されており、現在のページがページ指定のテキストボックス607で指定された終了ページであるか否かを判断する(ステップS235)。ステップS235の判断結果がNOであれば、物件データを割り付けるべきページがまだあるので、次のページの最初のエリアの最初のセルから物件データを割り付けるために、ページ番号’を1増加し、エリアID’を1に初期化し、セル順番号’を1に初期化し(ステップS237)、その新たなページのページ番号に対応したページIDのレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込み(ステップS239)、カタログID、ページID、エリアIDが、それぞれ、現在のカタログID、現在のページID、1であるレコードを「ページエリアテーブル」54から読み込む(ステップS241)。
ステップS235の判断結果がYESであれば、物件データを割り付けるべきページがもう無いので、以降の物件データをあふれ物件データとして処理するためにあふれフラグをセットする(ステップS243)。
図20を参照すると、ステップS211のループを抜けて、現カテゴリ内の全ての物件データの割り付けが終了したならば、カテゴリを更新したときに改エリアをすることが指定されているので、エリアID’を1増加する(ステップS245)。次に、改エリアをしたときに、新たなエリアが次のページのものであるか否かをみるために、ページ内のエリアが終了したか否かを判断する(ステップS247)。ステップS247の判断結果がNOであれば、ページ更新のためのステップS249〜S255の処理をスキップして、セル番号’を1に初期化するのみで(ステップS248)、ステップS257に進む。
ステップS247の判断結果がYESであれば、ページ更新のために、ページ番号’を1増加する(ステップS249)。次に、ステップS235と同様に、チェックボックス606(図8)で範囲指定されており、更新されたページがページ指定のテキストボックス607で指定された終了ページを超えているか否かを判断する(ステップS251)。ステップS251の判断結果がYESであれば、処理を終了する。
ステップS251の判断結果がNOであれば、新たなページの最初のエリアの最初のセルから物件データを割り付けるために、エリアID’を1に初期化し、セル順番号’を1に初期化し(ステップS253)、新たなページのページ番号に対応したページIDのレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込み(ステップS255)、ステップS257に進む。
ステップS257では、1カテゴリに割り付けるエリア数がコンボボックス646−2(図12)で指定されている場合には、カテゴリ当たりの物件データの割り付けが終了していても、そのエリア数のエリアを費やすまでは、空データで残りのエリアを埋める必要があるため、コンボボックス646−2でエリア数が指定されていないこと、又は、コンボボックス646−2でエリア数が指定されており、かつ、そのエリア数が終了したことの条件が満たされているか否かを判断する(ステップS257)。ステップS257の判断結果がNOであれば、空データで埋めるべきエリアを設ける必要があるため、ステップS245に戻る。
ステップS257の判断結果がYESであれば、空データで埋めるべきエリアを設ける必要がない。この場合には、カタログID、ページID、エリアIDが、現在のカタログID、現在のページID、現在のエリアID’であるレコードを「ページエリアテーブル」54から読み込み(ステップS259)、現在のカテゴリについての処理を終了する。
次に、改段処理モードでの一括割り付け処理(ステップS135)の詳細について説明する。
図21を参照すると、まず、割り付け開始ページに対応するページID及び現在のカタログIDを有するレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込む(ステップS261)。次に、開始ページに対応するページIDを有するレコードのうち最小のエリアIDのレコードを「ページエリアテーブル」54から読み込む(ステップS263)。次に、各カテゴリについてのステップS267〜S331の処理を全てのカテゴリについて繰り返す(ステップS265)。
ステップS267では、「割り付け領域テーブル」57にレコードを追加する。従って、各カテゴリ毎に「割り付け領域テーブル」57の1レコードが作成されることとなる。次に、あふれフラグをリセットする(ステップS269)。あふれフラグとは、1カテゴリに割り付ける段数がコンボボックス521−3で指定されている場合に、その段数の段の全てのセルへの物件データの割り付けが終了して、現在は、あふれた物件データのためのレコードを「ページエリアセルデータテーブル」56に追加すべきであることを指示するためのものである。従って、カテゴリを更新して物件データの割り付けを開始するので、あふれフラグをリセットする。
次に、現在のカテゴリの物件データを割り付ける最初のページの最初のエリアの最初のセルから物件データを割り付けるために、変数であるエリアID’を1に初期化し、変数である段順番’も1に初期化し、変数であるセル順番号’も1に初期化する(ステップS270)。
次に、現在のカテゴリ内の全ての物件データについてステップS272〜S309の処理を繰り返す(ステップS271)。ステップS272〜S309の処理では、「ページエリアセルデータテーブル」56及び「割付け済みデータテーブル」58にレコードを追加する。
ステップS272では、現在の繰返しがステップS271の繰返しのうちの最初の繰返しであるか否かを判断する。最初の繰返しでなければ、ステップS275に進む。最初の繰返しであれば、浮動見出し小組挿入モードであるのか否か(チェックボックス642(図12)がチェックされているか否か)を判断する(ステップS273)。浮動見出し小組挿入モードでなければ、ステップS275に進む。
最初の繰返しであり、浮動見出し小組挿入モードである場合には(ステップS272及びS273でYES)、浮動見出し小組を挿入するためにステップS274を実行する。ステップS274では、「割り付け済みデータテーブル」58に浮動見出し小組についてのレコードを追加する。このレコードは、セルに割り付ける浮動見出し小組についても、あふれ浮動見出し小組についても作成するが、通常は、あふれ浮動見出し小組は生じていないので、セルに割り付ける浮動見出し小組についてのみ作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「見出し」であり、物件IDは、無効値(NULL)であり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に当該浮動見出し小組の次に割付けられるべき物件データを適用した結果選択される小組テンプレートのIDである。
ステップS275では、「割り付け済みデータテーブル」58に現在のカテゴリ内の現在の物件データについてのレコードを追加する。このレコードは、セルに割り付ける物件データについても、あふれ物件データについても作成する。このレコードの割り付け済みデータIDは、レコードが追加されるたびに増加する通し番号であり、データ区分は「物件」であり、物件IDは、物件データベースの物件テーブル中の物件IDであり、小組テンプレートIDは、「小組テンプレート選択条件設定」パネル621(図11)による設定内容に現在の物件データを適用した結果選択される小組テンプレートのIDである。
ここで、ステップS274及びS275で行われる小組テンプレートの自動選択は、ステップS154及びS155で行われるものと同様であるので、この説明を省略する。
ステップS274又はS275のステップS276では、あふれフラグがセットされているか又はリセットされているかを判断する。セットされていなければ、ステップS277に進み、セットされていれば、ステップS281に進む。
ステップS277では、セルに割り付ける物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、セル順番号’である。従って、このレコードの「エリア内レコード順番号」と「セル順番号」は等しい。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。
ステップS277を実行した後、現在のカタログID、ページID、エリアID’、セル順番号’を有する「ページエリアセルテーブル」55のレコードの「小組テンプレートID」と直前に「割り付け済みデータテーブル」58に追加したレコードの「小組テンプレートID」を比較し(ステップS278)、一致していない場合には、前者に後者の値を書き込む。ページ作成(ステップS101)を行った直後の「ページエリアセルテーブル」55の「小組テンプレートID」は、当該エリアでディフォルトで利用する小組テンプレートのIDとなっているが、ステップS278及びS279を行うことにより、「ページエリアセルテーブル」55の「小組テンプレートID」を、ステップS274又はS275において物件データ又は浮動見出し小組に対して自動選択した小組テンプレートのIDと等しくすることができる。ステップS278でNOである場合には、ステップS283に進み、ステップS279を実行した場合にも、ステップS283に進む。
ステップS281では、あふれ物件データについてのレコードを「ページエリアセルデータテーブル」56に追加する。このレコードの「カタログID」、「ページID」、「エリアID」、「エリア内レコード順番号」、「セル順番号」は、それぞれ、現在のカタログID、ページID、エリアID’、セル順番号’、NULLである。従って、セル順番号’は、ステップS271のループを繰り返す度に、物件データがあふれているいないにかかわらず1増加するので、このレコードの「エリア内レコード順番号」は、あふれが始まる前のセル順番号をあふれ後もカウントし続けたものとなる。また、「割り付け領域ID」は、直前に「割り付け領域テーブル」57に追加したレコードの「割り付け領域ID」と等しく、「割り付け済みデータID」は、直前に「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と等しい。従って、「ページエリアセルデータテーブル」56の「割り付け領域ID」は、カテゴリ毎に異なる。ステップS281からは、ステップS283に進む。
図22を参照すると、ステップS283では、セル順番号’を1増加する。次に、段内のセルが終了したか否かを判断する(ステップS285)。ステップS285の判断結果がNOであれば、現在の段のセルへの物件データの割り付けが終了していないので、次の物件データを同一段の次のセルに割り付けるために、ステップS272に戻る。
ステップS285の判断結果がYESであれば、現在の段のセルへの物件データの割り付けが終了しているので、次の段のセルに物件データを割り付ける。このため、次の段が次のエリアのものであるか否かをみるために、現在の段順番’に1を加算したときに、現エリアの段数を超えるか否かを判断する(ステップS287)。ステップS287の判断結果がNOであれば、次の物件データを現エリアの次の段のセルに割り付けるために、ステップS289〜S303の処理をスキップし、ステップS305に進む。
ステップS287の判断結果がYESであれば、エリアを更新することとなるので、次のエリアが同一ページのものであるかをみるために、現在のエリアIDに1を加算したときに、そのエリアが現ページを超えるか否かを判断する(ステップS289)。ステップS289の判断結果がNOであれば、次の物件データを現ページの次のエリアの最初のセルに割り付けるために、エリアID’を1増加し、セル順番号’を1に初期化し(ステップS291)、カタログID、ページID、エリアIDが、それぞれ、現在のカタログID、現在のページID、現在のエリアID’であるレコードを「ページエリアテーブル」54から読み込み(ステップS293)、ステップS305に進む。
ステップS289の判断結果がYESであれば、現在のエリアが現在のページの最後のエリアであるということである。この場合、チェックボックス606(図8)で範囲指定されており、現在のページがページ指定のテキストボックス607で指定された終了ページであるか否かを判断する(ステップS295)。ステップS295の判断結果がNOであれば、物件データを割り付けるべきページがまだあるので、次のページの最初のエリアの最初のセルから物件データを割り付けるために、ページ番号’を1増加し、エリアID’を1に初期化し、セル順番号’を1に初期化し(ステップS297)、その新たなページのページ番号に対応したページIDのレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込み(ステップS299)、カタログID、ページID、エリアIDが、それぞれ、現在のカタログID、現在のページID、1であるレコードを「ページエリアテーブル」54から読み込み(ステップS301)、ステップS305に進む。
ステップS295の判断結果がYESであれば、物件データを割り付けるべきページがもう無いので、以降の物件データをあふれ物件データとして処理するためにあふれフラグをセットし(ステップS303)、ステップS305に進む。
ステップS305では、現在の段が現カテゴリに割り付けられた最後の段であるか否かをみるために、コンボボックス646−3(図12)で1カテゴリに割り付ける段数が指定されており、且つ、コンボボックス646−3で指定した数の段への物件データの割り付けが終了したか否かを判断する(ステップS305)。ステップS305の判断結果がNOであれば、まだ、物件データを割り付けるべき段が残っているので、次の段順番’を1増加する(ステップS307)。ステップS305の判断結果がYESであれば、物件データを割り付けるべき段がもう無いので、あふれフラグをセットする(ステップS309)。
図23を参照すると、ステップS273のループを抜けて、現カテゴリ内の全ての物件データの割り付けが終了したならば、カテゴリを更新したときに改段をすることが指定されているので、段順番’を1増加する(ステップS311)。次に、改段をしたときに、新たな段が次のページのものであるか否かをみるために、エリア内の段が終了したか否かを判断する(ステップS313)。ステップS313の判断結果がNOであれば、エリア更新及び必要なページ更新のためのステップS315〜S329の処理をスキップして、セル番号’を段の最初のものに初期化するのみで(ステップS314)、ステップS331に進む。
ステップS313の判断結果がYESであれば、改エリアが必要であるので、エリアID’を1増加し(ステップS315)、新たなエリアが次のページのものであるか否かをみるために、ページ内のエリアが終了したか否かを判断する(ステップS317)。ステップS317の判断結果がNOであれば、ページ更新のためのステップS321〜S327の処理をスキップして、段順番’を1に初期化し、セル番号’を1に初期化するのみで(ステップS319)、ステップS329に進む。
ステップS317の判断結果がYESであれば、ページ更新のために、ページ番号’を1増加する(ステップS321)。次に、ステップS295と同様に、チェックボックス514でページ範囲指定され、更新されたページがページ指定の領域515で指定された終了ページを超えているか否かを判断する(ステップS323)。ステップS323の判断結果がYESであれば、処理を終了する。
ステップS323の判断結果がNOであれば、新たなページの最初のエリアの最初のセル(このセルは最初の段にある)から物件データを割り付けるために、エリアID’を1に初期化し、段順番’を1に初期化し、セル順番号’を1に初期化し(ステップS325)、新たなページのページ番号に対応したページIDのレコードを「ページテーブル」52及び「ページ属性テーブル」53からそれぞれ読み込み(ステップS327)、ステップS2329進む。
ステップS329では、カタログID、ページID、エリアIDが、現在のカタログID、現在のページID、現在のエリアID’であるレコードを「ページエリアテーブル」54から読み込み、次に、ステップS331に進む。
ステップ331では、1カテゴリに割り付ける段数がコンボボックス646−3(図12)で指定されている場合には、カテゴリ当たりの物件データの割り付けが終了していても、その段数の段を費やすまでは、空データで残りの段を埋める必要があるため、コンボボックス521−3でエリア数が指定されていないこと、又は、コンボボックス521−3で段数が指定されており、かつ、そのエリア数が終了することの条件が満たされているか否かを判断する。ステップS331の判断結果がNOであれば、空データで埋めるべき段を設ける必要があるため、ステップS311に戻る。
ステップS331の判断結果がYESであれば、空データで埋めるべき段を設ける必要がない。この場合には、現在のカテゴリについての処理を終了する。
以上、「カタログテーブル」51、「ページテーブル」52、「ページ属性テーブル」53、「ページエリアテーブル」54、「ページエリアセルテーブル」55、「ページエリアセルデータテーブル」56、「割り付け領域テーブル」57及び「割り付け済みデータテーブル」58の作成方法について説明した。
なお、ページ作成のステップS101が終了した段階で、「カタログテーブル」51、「ページテーブル」52、「ページ属性テーブル」53、「ページエリアテーブル」54、「ページエリアセルテーブル」55に基づいて表示される物件データ割り付け前のレイアウトビューを図1に示し、一括割り付け処理のステップS103が終了した段階で、「カタログテーブル」51、「ページテーブル」52、「ページ属性テーブル」53、「ページエリアテーブル」54、「ページエリアセルテーブル」55、「ページエリアセルデータテーブル」56、「割り付け領域テーブル」57及び「割り付け済みデータテーブル」58に基づいて表示される物件データ割り付け後のレイアウトビュー及びデータシートビューを、それぞれ、図2及び13に示す。
[変更及び移動の処理]
次に、物件データ割り付け後に行われる変更及び移動の処理について説明する。変更としては、セル区分の変更、小組テンプレートの変更及び物件データの変更があり、移動としては、物件データの移動及び浮動見出しの移動がある。
次に、物件データの割り付け直後において、図24に示すように物件データが割り付けられているとして、それぞれの変更等について説明する。
まず、セル区分の変更について説明する。図25を参照すると、オペレータがセル区分の変更をしたいセル上でコンピュータマウスを右クリックすると、図25に示すようなポップアップメニューが表示される。オペレータがこのポップアップメニューから「セル区分変更…」を選択すると、図26に示すようなダイアログボックスが表示される。このダイアログボックスのコンボボックスには、セルの区分として、「見出しセル」、「割り付けセル」及び「空きセル」が表示される。「割り付けセル」とは、物件データが割り付けられるセルであり、「空きセル」とは、何も割り付けられないセルである。「見出しセル」とは、物件データ中の見出し用の項目を表示するためのセルであり、物件データが割り付けられるセルである。オペレータがこのコンボボックスで、例えば、「空きセル」を選択すると、当該セルが空きセルとなり、レイアウトビューは図27に示すようになる。図24と図27を比較すると明らかなように、変更後においては、第2ページの右下のセルは空きセルとなり、変更前に第2ページの右下のセルにあった「KPホテル」は、第3ページの左上のセルに繰り下がり、以降の物件データも同様に1セル分繰り下がる。
次に、小組テンプレートの変更について説明する。図28を参照すると、オペレータが小組テンプレートの変更をしたいセルの上でコンピュータマウスを右クリックすると、図28に示すようなポップアップメニューが表示される。オペレータがこのポップアップメニューから「小組テンプレート変更…」を選択すると、図29に示すようなダイアログボックスが表示される。このダイアログボックスのコンボボックスには、変更できる全ての小組が表示される。オペレータがこのコンボボックスで、例えば、「1−4kogumi」を選択すると、当該セルの小組が「1−4kogumi」に変更され、レイアウトビューは図30に示すようになる。図24と図30を比較すると明らかなように、変更後においては、共同第一ホテル」が割り付けられる小組は、1セル分のものから2セル分のものに変更され、それ以降の物件データ「共同イン」等は、1セル分繰り下がる。
次に、物件データの変更について説明する。図31を参照すると、オペレータが物件データを変更したいセルの上でコンピュータマウスを右クリックすると、図31に示すようなポップアップメニューが表示される。オペレータがこのポップアップメニューから「物件の変更…」を選択すると、図32に示すようなダイアログ画面が表示される。オペレータは、「カテゴリ」のコンボボックスで所望のフィルタを選択し、選択したフィルタに応じて「割り付け範囲選択」のツリービューに表示される階層構造のカテゴリで所望のカテゴリを選択し、選択したカテゴリに応じて「物件ID・物件名」のテーブルに表示されるテーブルで所望の物件データを選択して「OK」ボタンを押す。すると、レイアウトビューは図33に示すようになる。図24と図33を比較すると明らかなように、「KPホテル」が図32の画面で選択された「ホテル共同」に変更されている。
次に、物件データの移動について説明する。図34を参照すると、オペレータが移動元の物件データを移動先の物件データにドラッグ&ドロップすると、図35に示すようなポップアップメニューが表示される。このポップアップメニューでは、「ここに移動(挿入)」、「ここに移動(上書き)」、「ここの物件と入れ換え」の何れかが選択可能となっている。オペレータがこのポップアップメニューで「ここに移動(挿入)」を選択すると、レイアウトビューは図36に示すようになる。図24と図36を比較すると明らかなように、移動元の「KPホテル」は、移動先に移動し、移動先に元々あった「共同ホテル」は1セル分繰り下がり、それ以降の「共同都ホテル」及び「文京共同ホテル」も1セル分繰り下がる。
次に、上述の物件データ割り付け後の変更を可能にするためのデータベース構造について図37を参照して説明する。図37に示す諸テーブルは、ハードディスクドライブ等のコンピュータ読み取り可能な記録媒体に記録される。
図37を参照すると、「カタログテーブル」51は、図3に示したものと同一である。
「小組テンプレートテーブル」61の列は、「カタログID」、「小組テンプレートID」、「小組テンプレート高さ」、「小組テンプレート幅」及び「小組テンプレートXMLデータ」である。「カタログID」と「小組テンプレートID」より構成される連結キーが主キーである。「カタログテーブル」51と「小組テンプレートテーブル」61の間には、「カタログテーブル」51の「カタログID」と「小組テンプレートテーブル」61の「カタログID」により1対多のリレーションが付けられる。「小組テンプレートテーブル」61には、カタログIDにより示されるカタログで使用可能な全ての小組テンプレートのレコードが設けられる。
「小組テンプレートボックステーブル」62の列は、「カタログID」、「小組テンプレートID」、「小組テンプレートボックスID」、「ボックスタイプ」、「ボックス高さ」、「ボックス幅」、「ボックス原点X」、「ボックス原点Y」、「流し込まれる列名」である。「カタログID」と「小組テンプレートID」と「小組テンプレートボックスID」より構成される連結キーが主キーである。「小組テンプレートテーブル」61と「小組テンプレートボックステーブル」62の間には、「小組テンプレートテーブル」61の「カタログID」及び「小組テンプレートID」と「小組テンプレートボックステーブル」62の「カタログID」及び「小組テンプレートID」により1対多のリレーションが付けられる。「小組テンプレートボックステーブル」62には、小組テンプレートIDにより示される小組テンプレートに含まれる全てのボックスのレコードが各小組について設けられる。小組は、1以上のボックスで構成される。「ボックスタイプID」は、ボックスがテキストボックスであるのか、又は、画像ボックスであるのかを示す。「流し込まれる列名」は、当該ボックスに流し込まれる項目名(例えば、ホテル名等)を示す。
「ページテンプレートテーブル」63の列は、「カタログID」、「ページテンプレートID」及び「ページ区分」である。「カタログID」と「ページテンプレートID」より構成される連結キーが主キーである。「カタログテーブル」51と「ページテンプレートテーブル」63の間には、「カタログテーブル」51の「カタログID」と「ページテンプレートテーブル」63の「カタログID」により1対多のリレーションが付けられる。「ページテンプレートテーブル」63には、カタログIDにより示されるカタログで使用可能な全てのページテンプレートのレコードが設けられる。
「ページテンプレート属性テーブル」64の列は、「カタログID」、「ページテンプレートID」、「ページ種類」、「ページサイズ」、「ページ高さ」及び「ページ幅」である。「カタログID」、「ページテンプレートID」及び「ページ種類」より構成される連結キーが主キーである。「ページテンプレートテーブル」63と「ページテンプレート属性テーブル」64の間には、「ページテンプレートテーブル」63の「カタログID」及び「ページテンプレートID」と「ページテンプレート属性テーブル」64の「カタログID」及び「ページテンプレートID」により1対多のリレーションが付けられる。「ページテンプレートID」により示されるページテンプレートは、見開き又は単ページについてのものであるが、「ページテンプレート属性テーブル」64のレコードは、見開きの場合には、各ページテンプレートにつき見開き両ページ分設けられ、単ページの場合には各ページテンプレートにつき1個設けられる。
「ページテンプレートエリアテーブル」65の列は、「カタログID」、「ページテンプレートID」、「エリアID」、「ページ種類」、「エリア原点X」、「エリア原点Y」、「エリア高さ」、「エリア幅」、「小組配置方向」、「コラム数横」、「コラム数縦」、「コラム間隔横」、「コラム間隔縦」及び「基本小組テンプレートID」である。「カタログID」、「ページテンプレートID」、「エリアID」及び「ページ種類」より構成される連結キーが主キーである。「ページテンプレートテーブル」63と「ページテンプレートエリアテーブル」65の間には、「ページテンプレートテーブル」63の「カタログID」及び「ページテンプレートID」と「ページテンプレートエリアテーブル」65の「カタログID」及び「ページテンプレートID」により1対多のリレーションが付けられる。「ページテンプレート属性テーブル」64と「ページテンプレートエリアテーブル」65の間には、「ページテンプレート属性テーブル」64の「カタログID」、「ページテンプレートID」及び「ページ種類」と「ページテンプレートエリアテーブル」65の「カタログID」、「ページテンプレートID」及び「ページ種類」により1対多のリレーションが付けられる。「小組テンプレートテーブル」61と「ページテンプレートエリアテーブル」65の間には、「小組テンプレートテーブル」61の「カタログID」及び「小組テンプレートID」と「ページテンプレートエリアテーブル」65の「カタログID」及び「基本小組テンプレートID」により1対1の関係が付けられる。
「ページテンプレートエリア小組テーブル」66の列は、「カタログID」、「ページテンプレートID」、「エリアID」及び「使用可能な小組テンプレートID」である。「カタログID」、「ページテンプレートID」、「エリアID」及び「使用可能な小組テンプレートID」より構成される連結キーが主キーである。「ページテンプレートエリアテーブル」65と「ページテンプレートエリア小組テーブル」66の間には、「ページテンプレートエリアテーブル」65の「カタログID」、「ページテンプレートID」及び「エリアID」と「ページテンプレートエリア小組テーブル」66の「カタログID」、「ページテンプレートID」及び「エリアID」により1対多のリレーションが付けられる。「小組テンプレートテーブル」61と「ページテンプレートエリア小組テーブル」66の間には、「小組テンプレートテーブル」61の「カタログID」及び「小組テンプレートID」と「ページテンプレートエリア小組テーブル」66の「カタログID」及び「使用可能な小組テンプレートID」により1対1の関係が付けられる。
「小組テンプレートテーブル」61及び「小組テンプレートボックステーブル」62が小組テンプレートを管理するために用いられ、「ページテンプレートテーブル」63、「ページテンプレート属性テーブル」64、「ページテンプレートエリアテーブル」65及び「ページテンプレートエリア小組テーブル」66がページテンプレートを管理するために用いられる。
なお、上述したステップS101では、「ページテーブル」52は、「ページテンプレートテーブル」63を基に作成され、「ページ属性テーブル」53は、「ページテンプレート属性テーブル」64を基に作成され、「ページエリアテーブル」54は、「ページテンプレートエリアテーブル」65を基に作成され、「ページエリアセルテーブル」55は、「ページテンプレートエリア小組テーブル」66を基に作成される。
次に、上述の物件データ割り付け後の変更等を行う方法について説明する。
図38を参照すると、図24に示すような物件データ割り付け済みのレイアウトビューにおいて、物件データ上でマウスが右クリックされるのを検出したら(ステップS401)、図25に示すようなポップアップメニューを表示し、そのポップアップメニューでセル区分変更が選択されたならば(ステップS403でYES)、セル区分変更処理を行い(ステップS411)、小組テンプレート変更が選択されたならば(ステップS405でYES)、小組テンプレート変更処理を行い(ステップS413)、物件データ変更が選択されたならば(ステップS407でYES)、物件データ変更処理を行い(ステップS415)、物件データ移動が選択されたならば(ステップS409でYES)、物件データ移動処理を行う(ステップS417)。そして、ステップS411、S413、S415又はS417からステップS419に進み、変更又は移動後の画面を表示する。
次に、セル区分変更処理(ステップS411)について説明する。図39を参照すると、図26のダイアログボックスでオペレータが選択したセル区分を入力する(ステップS421)。ここで選択できるセル区分は、「見出しセル」、「割り付けセル」又は「空きセル」である。次に、コンピュータマウスが右クリックされたセルに対応するレコードを「ページエリアセルテーブル」55及び「ページエリアセルデータテーブル」56から検索する(ステップS423)。次に、当該セルの区分を変更する(ステップS425)。具体的には、ステップS423で検索した「ページエリアセルテーブル」55のレコードの「セル区分」を変更する。次に、セル区分変更に伴う物件データ割り付け位置変更処理を行う(ステップS427)。
具体的には、見出しセルから割り付けセルにセル区分を変更する場合には、元々、見出しセルとその次のセル(空きセルは不算入)には同一の物件データが割り付けられているので、現在のセルに割り付けられている物件データを削除し、現在の見出しが占有するセルの次のセル(空きセルは不算入)以降のセル(空きセルは不算入)に割り付けられている物件データを繰り上げる。繰り上げの数は現在の見出しセルのセル数である。繰り上げは、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えることにより行う。また、繰り上げは、当該カテゴリのみにおいて行い、他のカテゴリに影響を及ぼさないようにする。
図44を参照すると、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えたレコードの「カタログID」、「ページID」、「エリアID」及び「セル順番号」を有するレコードを「ページエリアセルテーブル」55から検索する(ステップS711)。また、書換え後の「割り付け済みデータID」を有するレコードを「割り付け済みデータテーブル」58から検索する(ステップS712)。そして、「ページエリアセルテーブル」55から検索されたレコードの「小組テンプレートID」と「割り付け済みデータテーブル」58から検索されたレコードの「小組テンプレートID」とを比較し(ステップS713)、両者が一致しない場合には、後者の値を前者に代入する(ステップS714)。こうすることにより、物件データの移動に付随して小組テンプレートも移動することとなる。この処理を「随伴移動処理」ということにする。
割り付けセルから見出しセルにセル区分を変更する場合には、見出しセルと見出しが占めるセルの次のセル(空きセルは不算入)には同一の物件データを割り付けなければならないので、現在のセルに割り付けられている物件データはそのままとし、現在のセル以降のセル(空きセルは不算入)に割り付けられている物件データを繰り下げる。繰り下げのセル数は、見出しセルのセル数とする。繰り下げは、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えることにより行う。この書換えの後、「随伴移動処理」も行う。また、繰り下げは、当該カテゴリのみにおいて行い、他のカテゴリに影響を及ばさないようにする。
割り付けセルから空きセルにセル区分を変更する場合には、空きセルには物件データを割り付けられないので、現在のセル以降のセル(空きセルは不算入)に割り付けられている物件データを繰り下げ、現在の割り付けセルに割り付けられている物件データを削除する。繰り下げのセル数は、現在の割り付けセルのセル数である。繰り下げは、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えることにより行う。この書換えの後、「随伴移動処理」も行う。物件データの削除は、「ページエリアセルデータテーブル」56の「割り付け済みデータID」をNULLにすることにより行う。また、繰り下げは、当該カテゴリのみにおいて行い、他のカテゴリに影響を及ばさないようにする。
空きセルから割り付けセルにセル区分を変更する場合には、空きセルには物件データが割り付けられていないので、現在のセルの次のセル(空きセルは不算入)以降のセル(空きセルは不算入)に割り付けられている物件データを1セル繰り上げる。繰り上げは、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えることにより行う。この書換えの後、「随伴移動処理」も行う。また、繰り上げは、当該カテゴリのみにおいて行い、他のカテゴリに影響を及ばさないようにする。
空きセルから見出しセルにセル区分を変更する場合は、空きセルには物件データが割り付けられておらず、見出しセルには、次のセル(空きセルは不算入)の物件データと同一の物件データを割り付けるので、次のセル(空きセルは不算入)に割り付けられている物件データを現在のセルにも割り付ける。この割り付けは、「ページエリアセルデータテーブル」56の「割り付け済みデータID」を書き換えることにより行う。但し、これは見出しセルのセル数が1である場合の処理であり、見出しセルのセル数が2以上である場合には処理はもう少し複雑になる。また、繰り上げは、当該カテゴリのみにおいて行い、他のカテゴリに影響を及ぼさないようにする。
見出しセルから空きセルにセル区分を変更する場合には、空きセルには物件データを割り付けないので、見出しセルに割り付けられている物件データを削除する。
割り付けセルから空きセルにセル区分を変更する方法のフローチャートを図40に示す。図40を参照すると、まず、現在のセルに対応した「ページエリアセルテーブル」55のレコードの「カタログID」及び「小組テンプレートID」と同一の「カタログID」及び「小組テンプレート」を有するレコードを「小組テンプレートテーブル」61から検索し、そのレコードの「小組テンプレート高さ」及び「小組テンプレート幅」を取得する(ステップS451)。次に、ステップS451で取得した「小組テンプレートの高さ」及び「小組テンプレート幅」を基に小組が占有するセル数を算出し、そのセル数を物件データの割り付け位置変更量とする(ステップS453)。次に、「ページエリアセルテーブル」56の「割り付け領域ID」が変わるまでステップS457〜S461の処理を繰り返す(ステップS455)。「割り付け領域ID」は前述したようにカテゴリ毎に異なるので、ステップS455の繰返しは、当該カテゴリが終了するまで続く。
ステップS457では、現在のセルに対応するレコードの「割り付け済みデータID」を「ページエリアセルデータテーブル」56から検索する(ステップS457)。次に、「ページエリアセルデータテーブル」56から上記位置変更量から求めた移動先のセルに対応するレコードを検索する(ステップS459)。次に、ステップS457で検索した「割り付け済みデータID」をステップS459で検索したレコードの「割り付け済みデータID」に書き込む(ステップS461)。この書込みの後、「随伴移動処理」も行う(ステップS462)。
次に、図39に戻り、小組テンプレート変更処理(ステップS413)について説明する。図29のダイアログボックスでオペレータが選択した小組テンプレートを入力する(ステップS429)。次に、コンピュータマウスが右クリックされたセルに対応するレコードを「ページエリアセルテーブル」55及び「ページエリアセルデータテーブル」56から検索する(ステップS431)。次に、当該セルの小組テンプレートIDを変更する(ステップS433)。具体的には、ステップS431で検索した「ページエリアセルテーブル」55のレコードの「小組テンプレートID」を変更し、更に、ステップS431で検索した「ページエリアセルデータテーブル」56のレコードの割り付け済みデータIDを有するレコードを「割り付け済みデータテーブル」58から検索し、そのレコードの「小組テンプレートID」を変更する。次に、小組テンプレート変更に伴う物件データ割り付け位置変更処理を行う(ステップS435)。
ステップS435の詳細を図40を参照して説明する。まず、現在のセルに対応した「ページエリアセルテーブル」55のレコードの「カタログID」及び「小組テンプレートID」と同一の「カタログID」及び「小組テンプレートID」を有するレコードを「小組テンプレートテーブル」61から検索し、そのレコードの「小組テンプレート高さ」及び「小組テンプレート幅」を取得すると共に、現在のセルに対応した「ページエリアセルテーブル」55のレコードの「カタログID」及びステップS429で入力した「小組テンプレートID」と同一の「カタログID」及び「小組テンプレートID」を有するレコードを「小組テンプレートテーブル」61から検索し、そのレコードの「小組テンプレート高さ」及び「小組テンプレート幅」を取得する(ステップS471)。次に、ステップS471で取得した「小組テンプレートの高さ」及び「小組テンプレート幅」を基に変更前の小組及び変更後の小組が占有するセル数をそれぞれ算出する(ステップS473)。次に、ステップS473で算出したセル数を基に、占有セル数が増えた場合においては、変更後の小組の下に新たに隠れてしまこととなるセルの数を算出し、そのセルの数を割り付け位置変更量とし、占有セル数が減った場合においては、変更後に新たに表示されることとなるセルの数を算出し、そのセルの数を割り付け位置変更量とする(ステップS475)。次に、「ページエリアセルテーブル」56の「割り付け領域ID」が変わるまでステップS479〜S484の処理を繰り返す(ステップS477)。「割り付け領域ID」は前述したようにカテゴリ毎に異なるので、ステップS477の繰返しは、当該カテゴリが終了するまで続く。
ステップS479〜S484は、ステップS457〜S462と同様であるので、この説明を省略する。
なお、見出しセルにおいても見出し用の小組テンプレートを用いるので、物件データを表示するセルを見出しを表示するセルに変更する場合には、セル区分を割り付けセルから見出しセルに変更すると共に、小組テンプレートを物件データ表示用のものから見出し表示用のものに変更する。
次に、図39に戻り、物件データ変更処理(ステップS415)について説明する。図32のダイアログボックスでオペレータに物件データを選択させ、その物件データの物件IDを認識する(ステップS437)。次に、コンピュータマウスが右クリックされたセルに対応するレコードの「割り付け済みデータID」を「ページエリアセルデータテーブル」56から検索し、その「割り付け済みデータID」と同一の「割り付け済みデータID」を有するレコードを「割り付け済みデータテーブル」58から検索する(ステップS439)。次に、ステップS439で検索した「割り付け済みデータテーブル」58のレコードの「物件ID」をステップS437で入力した物件IDに変更する(ステップS440)。
こうすることにより、一括割り付け処理(ステップS103)で何れのセルにも割り付けられなかった物件データであっても、新たに希望のセルに割り付けることが可能となる。
次に、物件データ移動処理(ステップS417)について説明する。まず、ドラッグ&ドロップに係る移動先のセルを特定する(ステップS443)。なお、移動元のセルはステップS401で特定できている。次に、移動元のセルに対応するレコードを「ページエリアセルデータテーブル」56から検索し(ステップS445)、移動先のセルに対応するレコードを「ページエリアセルデータテーブル」56から検索する(ステップS447)。そして、ステップS445及びS447で検索したレコード等の割り付け済みデータIDを書き換える(ステップS449)。具体的には、図35に示すポップアップメニューで「ここに移動(挿入)」が選択された場合には、移動元セルに対応した「ページエリアセルデータテーブル」56のレコードと移動先セルに対応した「ページエリアセルデータテーブル」56のレコードの間の全てのレコードにわたり、割り付け済みデータIDについて、繰り下げ方向又は繰り上がり方向の巡回的シフトを行う。また、図35に示すポップアップメニューで「ここに移動(上書き)」が選択された場合には、移動元セルに対応した「ページエリアセルデータテーブル」56のレコードの「割り付け済みデータID」を移動先セルに対応した「ページエリアセルデータテーブル」56のレコードの「割り付け済みデータID」にコピーする。更に、図35に示すポップアップメニューで「ここの物件と入れ換え」が選択された場合には、移動元セルに対応した「ページエリアセルデータテーブル」56のレコードと移動先セルに対応した「ページエリアセルデータテーブル」56のレコードの間で「割り付け済みデータID」を入れ換える。ステップS449の次にステップS449で「割り付け済みデータID」が書換えられた「ページエリアセルデータテーブル」56の各レコードについて「随伴移動処理」を行う(ステップS449)。
図41及び42は、物件データを移動する際に、小組テンプレートも付随して移動することを示す図である。図41は移動前の状態を示し、図42は移動後の状態を示す。「KPホテル」の物件データが移動対象であり、2セル分の小組テンプレートを利用したものである。移動先のセルには、1セル分の小組テンプレートを利用した「共同第一ホテル」の物件データがあるが、このセルを指定して「KPホテル」の物件データを移動した後には、移動前と同一の2セル(指定したセルとその次のセル)分の小組テンプレートを利用した「KPホテル」の物件データが表示される。「第1共同ホテル」以降の物件データは、小組テンプレートと共に2セル分後方に移動する。
以上、セル区分変更、小組テンプレート変更、物件データ変更及び物件データ移動について説明した。
[物件データの挿入処理]
図43を参照すると、物件データを挿入する場合には、「割り付け済みデータテーブル」58にレコードを追加する(ステップS721)。このレコードの「割り付け済みデータID」は、カタログについて新たに追加される通し番号である。また、このレコードの「データ区分」は、「物件」である。また、このレコードの「物件ID」は、挿入しようとする物件のIDであり、図32の画面で選択されたものである。また、このレコードの「小組テンプレートID」は、図15を参照して説明した小組選択方法を用いて選択した小組のIDである。
次に、「ページエリアセルデータテーブル」56にレコードを追加する(ステップS722)。このレコードの「カタログID」、「ページID」、「エリアID」、「セル順番号」は、現在選択されているセルに対応するものである。また、このレコードの「エリア内レコード順番号」は、選択されているセルが属するカテゴリにおいて新たに追加される通し番号である。また、このレコードの「割り付け領域ID」は、現在選択されているセルが属するカテゴリに対応するものである。また、このレコードの「割り付け済みデータID」は、ステップS721で「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と同一のものである。
次に、「ページエリアセルデータテーブル」56のレコードのうち「割り付け済みデータID」が当該挿入により移動する物件データ又は浮動見出しのIDであるレコードの「ページID」、「エリアID」、「セル順番号」を移動後のセルに対応したものに書き換える(ステップS723)。この移動によりあふれることとなる物件データ又は浮動見出しについては、「セル順番号」は「NULL」となる。
次に、ステップS722で追加された「ページエリアセルデータテーブル」56のレコード及びステップS723で書き換えられた「ページエリアセルデータテーブル」56のレコードの全てについて、これらのレコードをステップS711及びS712でいう当該現在のレコードとして、図44を参照して説明した随伴移動処理を行う(ステップS724)。
[浮動見出しの挿入処理]
浮動見出しの挿入処理の全体の流れは、物件データの挿入処理のものと同様であるので、図43を参照して説明する。但し、ステップS721で追加されるレコードの内容が異なる。
図43を参照すると、浮動見出しを挿入する場合には、「割り付け済みデータテーブル」58にレコードを追加する(ステップS721)。このレコードの「割り付け済みデータID」は、カタログについて新たに追加される通し番号である。また、このレコードの「データ区分」は、「見出し」である。また、このレコードの「物件ID」は、NULLである。また、このレコードの「小組テンプレートID」は、図15を参照して説明した小組選択方法を用いて選択した小組のIDである。
次に、「ページエリアセルデータテーブル」56にレコードを追加する(ステップS722)。このレコードの「カタログID」、「ページID」、「エリアID」、「セル順番号」は、現在選択されているセルに対応するものである。また、このレコードの「エリア内レコード順番号」は、選択されているセルが属するカテゴリにおいて新たに追加される通し番号である。また、このレコードの「割り付け領域ID」は、現在選択されているセルが属するカテゴリに対応するものである。また、このレコードの「割り付け済みデータID」は、ステップS721で「割り付け済みデータテーブル」58に追加したレコードの「割り付け済みデータID」と同一のものである。
次に、「ページエリアセルデータテーブル」56のレコードのうち「割り付け済みデータID」が当該挿入により移動する物件データ又は浮動見出しのIDであるレコードの「ページID」、「エリアID」、「セル順番号」を移動後のセルに対応したものに書き換える(ステップS723)。この移動によりあふれることとなる物件データ又は浮動見出しについては、「セル順番号」は「NULL」となる。
次に、ステップS722で追加された「ページエリアセルデータテーブル」56のレコード及びステップS723で書き換えられた「ページエリアセルデータテーブル」56のレコードの全てについて、これらのレコードをステップS711及びS712でいう当該現在のレコードとして、図44を参照して説明した随伴移動処理を行う(ステップS724)。