(57)【要約】【課題】  メインフォームとサブフォームとで構成される帳票を作成する際、メインフォームの抽出条件とサブフォームの抽出条件を合わせた１つのクエリでデータベースを検索抽出した場合、抽出結果にメインフォームに流し込むデータが重複してしまっていた。【解決手段】  本発明によれば、メインフォームの抽出条件を用いてクエリを生成してメインフォームに流し込むデータをデータベースから抽出し、該データのレコードを帳票のメインフォームに流し込むごとに、当該流し込んだレコードとサブフォームの抽出条件を用いてクエリを生成してサブフォームに流し込むデータをデータベースから抽出して、当該帳票のサブフォームに流し込んで帳票生成を行う。【選択図】  図４
2005044175.tif 000002
【特許請求の範囲】
【請求項１】
第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成する装置を制御するための帳票作成方法であって、
前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定ステップと、
前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出ステップと、
前記第１フォーム部分データ抽出ステップで抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成ステップと
を有することを特徴とする帳票作成方法。
【請求項２】
前記第１フォーム部分はメインフォームであり、前記第２フォーム部分はサブフォームであることを特徴とする請求項１に記載の帳票作成方法。
【請求項３】
更に、複数のクエリを用いてデータを抽出する複数クエリ処理と、単一のクエリを用いてデータを抽出する単一クエリ処理とを切り替える切替ステップを有し、
前記切替ステップで複数クエリ処理に切り替えられた場合に、前記第１データ抽出ステップと前記帳票作成ステップとを実行するように制御することを特徴とする請求項１に記載の帳票作成方法。
【請求項４】
更に、前記切替ステップで単一クエリ処理に切り替えられた場合、前記第１抽出条件と前記第２抽出条件とを合わせた１つのクエリを生成して実行することにより、前記第１フォーム部分と前記第２フォーム部分とに流し込む第３のデータをデータベースから抽出する第３データ抽出ステップと、
前記抽出した第３のデータを、前記第１フォーム部分と前記第２フォーム部分とに流し込んで帳票を作成する第２帳票作成ステップと
を有することを特徴とする請求項３に記載の帳票作成方法。
【請求項５】
第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成する帳票作成装置であって、
前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定手段と、
前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出手段と、
前記第１フォーム部分データ抽出手段で抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成手段と
を有することを特徴とする帳票作成装置。
【請求項６】
第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成するためのコンピュータ実行可能な帳票作成プログラムであって、
前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定ステップと、
前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出ステップと、
前記第１フォーム部分データ抽出ステップで抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成ステップと
の各ステップをコンピュータに実行させるためのプログラムコードを含むことを特徴とする、コンピュータ実行可能な帳票作成プログラム。
【請求項７】
前記第１フォーム部分はメインフォームであり、前記第２フォーム部分はサブフォームであることを特徴とする請求項６に記載の帳票作成プログラム。
【請求項８】
複数のクエリを用いてデータを抽出する複数クエリ処理と、単一のクエリを用いてデータを抽出する単一クエリ処理とを切り替える切替ステップを実行させるためのプログラムコードと、
前記切替ステップで複数クエリ処理に切り替えられた場合に、前記第１データ抽出ステップと前記帳票作成ステップとを実行するように制御されるプログラムコードとを含むことを特徴とする請求項６に記載の帳票作成プログラム。
【請求項９】
前記切替ステップで単一クエリ処理に切り替えられた場合、前記第１抽出条件と前記第２抽出条件とを合わせた１つのクエリを生成して実行することにより、前記第１フォーム部分と前記第２フォーム部分とに流し込む第３のデータをデータベースから抽出する第３データ抽出ステップと、
前記抽出した第３のデータを、前記第１フォーム部分と前記第２フォーム部分とに流し込んで帳票を作成する第２帳票作成ステップと
を実行させるためのプログラムコードを更に含むことを特徴とする請求項８に記載の帳票作成プログラム。
【請求項１０】
前記プログラムコードは、コンピュータ読み取り可能な記憶媒体に格納されることを特徴とする請求項６乃至９のいずれかに記載の帳票作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース装置およびデータベースファイル（以下、まとめてデータベース）からデータを抽出し、あらかじめ定義されたフィールド定義に従って、抽出結果をフィールドデータとして流し込んで帳票を作成する、帳票作成方法、帳票作成装置、コンピュータ実行可能な帳票作成プログラムに関するものである。
【背景技術】
【０００２】
従来、フィールドデータを取得し、当該取得されたフィールドデータをフォームに配置することによって、所望の帳票を作成する帳票作成システム（例えば、特許文献１参照）があった。
【特許文献１】特開２０００−２２２４９４
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本出願人は、帳票の１つの形態として、メインフォーム部分とサブフォーム部分とで構成されるような帳票を考えている。例えば、図１２に示すような見積もり書は、注文番号ごとに商品名とその金額などを一覧にまとめた伝票であり、メインフォームには注文番号と顧客情報や注文日などのフィールドを有し、サブフォームには商品名と個数と単価と金額などを１行とした複数の明細行と金額の合計をした集計行のフィールドを有する帳票である。このようなメインフォームとサブフォームを持つ帳票を作成する場合、データベース（単独のテーブル、もしくは結合した複数のテーブル）から、１つのクエリに基づいて、メインフォームのフィールドに流し込むフィールドデータとサブフォームのフィールドに流し込むフィールドデータとが結合されたデータを抽出する。その抽出したデータに含まれる各フィールドデータをメインフォームのフィールドとサブフォームのフィールドに流し込む。
【０００４】
例えば、図１３は、注文テーブル１３０１と注文明細テーブル１３０２との２つのテーブルを用いてフィールドデータを管理しているシステムである。ここでは、まず注文テーブル１３０１と注文明細テーブル１３０２から抽出対象のフィールドを結合して生成されたテーブル１３０４を取得し、該テーブル１３０４に基づいて注文Ｎｏ．ごとに明細を一覧にして帳票を作成する場合を説明した図である。この場合、テーブル１３０４に示したように、各レコードのメインフォームに対応するフィールドデータ（図１３の「注文Ｎｏ」、「注文日」、「顧客名」）には同じ値が繰り返し入ることになってしまう。したがって、生成されたテーブルのデータ量が大きくなってしまい、一度に膨大なデータを抽出する場合やネットワーク経由でデータベース装置に接続している場合、帳票作成処理での必要メモリが大きくなったり、データベースからのデータ転送時間が長くなったりしてしまい、処理効率が悪くなってしまう。
【０００５】
本発明は、上述の点に鑑みてなされたもので、メインフォームとサブフォームで別のクエリでデータを抽出することにより、抽出結果のデータ量を減らすようにすることを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本願の帳票作成方法は、第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成する装置を制御するための帳票作成方法であって、前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定ステップと、前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出ステップと、前記第１フォーム部分データ抽出ステップで抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成ステップとを有する。
【０００７】
上記課題を解決するために、本願の帳票作成装置は、第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成する帳票作成装置であって、前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定手段と、前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出手段と、前記第１フォーム部分データ抽出手段で抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成手段とを有する。
【０００８】
上記課題を解決するために、本願の帳票作成プログラムは、第１フォーム部分と第２フォーム部分とから構成される帳票にデータを流し込んで帳票を作成するためのコンピュータ実行可能な帳票作成プログラムであって、前記第１フォーム部分に流し込む第１のデータの抽出条件を示す第１抽出条件と、前記第２フォーム部分に流し込む第２のデータの抽出条件を示す第２抽出条件とを設定する抽出条件設定ステップと、前記第１抽出条件に基づいて第１フォーム部分のクエリを生成して実行することにより、前記第１のデータをデータベースから抽出する第１データ抽出ステップと、前記第１フォーム部分データ抽出ステップで抽出された第１のデータの各レコードを帳票の第１フォーム部分に流し込むごとに、当該流し込まれたレコードと前記第２抽出条件とに基づいて第２フォーム部分のクエリを生成して実行して、当該第１フォーム部分に流し込まれたレコードに対応する第２のデータをデータベースから抽出し、当該抽出した第２のデータを該帳票の第２フォーム部分に流し込むことによって帳票を作成する帳票作成ステップとの各ステップをコンピュータに実行させるためのプログラムコードを含む。
【発明の効果】
【０００９】
本発明によれば、データベースからの抽出結果のデータ中にメインフォームのデータが繰り返し入ることがなくなり、抽出結果の全体的なデータ量が小さくなる。特に、１度に膨大なデータを抽出する場合やネットワーク経由でデータベース装置に接続している場合、帳票作成処理での必要メモリが小さくて済んだり、データベースからのデータ転送時間が最小限で済むという効果がある。
【００１０】
また、別クエリ処理にすると抽出結果のデータ量は小さく出来るが、クエリ実行の回数が増えるので、別クエリ処理（複数クエリ処理）と単一クエリ処理とを切り替え可能とすることにより、使用可能メモリが大量にある場合やデータベースがローカル接続されている場合など、抽出結果のデータ量よりもクエリ回数の方が処理速度に大きく影響する環境に対しても対応することが出来るという効果がある。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態を図面を参照して説明する。
【００１２】
図１は、本実施形態の帳票作成装置が属するシステム全体の構成を示す図である。本実施形態の帳票作成装置は、データベース装置とＬＡＮを介して接続されているものとするが、データベース装置との接続方法は、ＷＡＮやローカル接続などその他の方法であってもよいし、帳票作成装置内にあるデータベースファイルであってもよい。
【００１３】
図２は、図１の帳票作成装置の基本的なハードウェア構成を示すブロック図である。本実施形態の帳票作成装置は、中央処理装置１、記憶装置２、表示装置３、キーボード４、マウス５、外部記憶装置６、印刷装置７などから構成されており、一般的なワークステーションやパーソナルコンピュータなどの情報処理装置にプログラムを導入することにより実現可能である。
【００１４】
なお、本発明を実現するためのコンピュータプログラムは、外部補助記憶装置６やネットワークなどを介して、コンピュータに配給されることが可能である。また、コンピュータプログラム等が格納される記憶媒体としては、ＲＯＭ、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードディスク、メモリカード、光磁気ディスクなどを用いることが可能である。図６は、記憶媒体に格納された帳票作成プログラムの構成例を示す。また、図７は、帳票作成プログラム、ＤＢ接続情報、クエリ情報、フォームデータ、プログラムワークメモリが記憶装置２に格納され、プログラムが実行可能となった状態のメモリマップ例である。
【００１５】
ＤＢ接続情報７０４（図８）は、帳票に流し込むフィールドデータが格納されたデータベースの場所を表すデータソース名、そのデータベースにアクセスするためのユーザ名とパスワードなどが格納されるものとする。
【００１６】
クエリ情報７０５は（図９）は、データベースから帳票に流し込むフィールドデータを抽出するためのＳＱＬ（クエリ）を生成するための情報で、メインフォームとサブフォームのクエリ設定、メインフォームとサブフォームで別のクエリでデータを抽出するかを表すフラグ、同じ値のレコードが連続した場合にそのレコードを削除する（抽出しない）かをあらわすフラグ、文字列の引用符の設定などを含んでいる。図１０は、別クエリフラグ、重複レコード削除フラグ、引用符設定を行う画面の例である。
【００１７】
図１１は、メインフォームとサブフォームのクエリ設定を行う画面の例である。画面の上半分のエリアでは、データを抽出するデータベースの複数のテーブルとフィールドの一覧を表示し、必要であればテーブルの結合を設定する。画面の下半分のエリアでは、テーブル中の抽出対象フィールド（集計やスカラー演算を含む）と、抽出条件などを設定する。この設定は、メインフォームとサブフォームの各々に対して行われる。例えば、ユーザからの指示に基づいて、メインフォームの抽出条件として（注文日＞２００２／０１／０１  ＡＮＤ  注文日＜２００２／１２／３１）を設定し、サブフォームの抽出条件として（個数＞５）を設定するなどが可能であるとする。
【００１８】
別クエリフラグがＯＦＦの場合は、メインフォームクエリ設定とサブフォームクエリ設定をあわせたクエリ設定で１つのクエリを生成するのに対し、別クエリフラグがＯＮの場合は、メインフォームクエリ設定とサブフォームクエリ設定から各々別のクエリを生成する。詳細は、後述する。
【００１９】
フォームデータ７０６は、帳票の固定部分のデザインとフィールド定義を含んでいる。フィールド定義は、メインフォームのフィールドとサブフォームの明細行や集計行の設定を含み、また、クエリ情報７０５のクエリ設定に対応したフィールド定義を持つフォームデータをあらかじめ読み込んで格納しておく。
【００２０】
次に、本実施形態で実行される処理の詳細について説明する。
【００２１】
始めに、全体の動作を図３のフローチャートに基づいて説明する。この処理は、図１０や図１１での設定が行われた後に実行されるものとする。まず、クエリ情報７０５の別クエリフラグがＯＮか判定する（ステップＳ３０１）。ＯＦＦであると判定された場合、ステップＳ３０２に進んで、クエリ情報７０５のメインフォームクエリ設定とサブフォームクエリ設定をあわせたクエリ設定で１つのクエリを生成する。つまり、メインフォームクエリ設定の抽出対象フィールドとサブフォームクエリ設定の抽出対象フィールドとを加えたものを抽出対象フィールドとし、メインフォームクエリ設定の抽出条件とサブフォームクエリ設定の抽出条件のＡＮＤを抽出条件とした１つのクエリを生成する。そして、当該生成されたクエリを実行し（ステップＳ３０３）、データベースが返してきた抽出結果の複数のレコードをプログラムワークメモリ７０７上のレコード変数Ｒに格納する（ステップＳ３０４）。そして、Ｒの各レコードをフィールドデータとしてメインフォームとサブフォームに流し込む（ステップＳ３０５〜Ｓ３０８）。サブフォームは表形式なのでレコードを順次流し込むと新しい行として追加されていくが、メインフォームは単票形式なのでレコードを順次流し込むと改ページブレイクするまでは同じフィールドに上書き（もしくは後続無視）される。
【００２２】
一方、ステップＳ３０１においてＯＮであると判定された場合、ステップＳ３０９に進んで別クエリ処理を行う。次に、ステップＳ３０９の別クエリ処理を図４を用いて詳細に説明する。
【００２３】
まず、クエリ情報７０５のメインフォームクエリ設定で設定された抽出条件に基づいてメインフォームのクエリを生成し（ステップＳ４０１）、生成したクエリを実行し（ステップＳ４０２）、データベースが返してきた抽出結果の複数のレコードをプログラムワークメモリ７０７上のメインフォームレコードを格納する変数ＭＲに、レコード数を変数ＭＣに格納する（ステップＳ４０３）。ループ変数ｉを０で初期化し（ステップＳ４０４）、ｉがＭＣよりも小さいか判定し（ステップＳ４０５）、小さければ、ＭＲのｉ番目のレコード（０オリジン）をメインフォームに流し込み（ステップＳ４０６）、ＭＲのｉ番目のレコードに対応するサブフォームクエリ処理（後述する）を行い（ステップＳ４０７）、ｉをカウントアップし（ステップＳ４０８）、ステップＳ４０５に戻り、ＭＲのレコードがなくなるまでループして処理を行ったら、処理を抜ける。
【００２４】
続いて、サブフォームクエリ処理Ｓ４０７について図５を用いて詳細に説明する。まず、クエリ情報７０５のサブフォームクエリ設定で設定された抽出条件とｉ番目のＭＲのレコードから、メインフォームのクエリとは別のサブフォームのクエリを生成する（ステップＳ５０１）。サブフォームのクエリは、サブフォームクエリ設定で設定された抽出条件と、ｉ番目のＭＲのレコードの値とのＡＮＤに基づいて１つのクエリを生成する。例えば、図１２のような帳票の場合、１番目のＭＲには、（注文Ｎｏ，注文日，顧客名）＝（００１１，２００２／○／×，ＸＸＸＸ株式会社）というレコードが格納されているので、サブフォームのクエリ設定の抽出条件に、（注文Ｎｏ，注文日，顧客名）＝（００１１，２００２／○／×，ＸＸＸＸ株式会社）をＡＮＤで加える。これにより、ｉ番目のメインフォームのレコードに対応したサブフォームのレコードのみが抽出できる。なお、ｉ番目のＭＲのレコードの値とのＡＮＤを取る際、サブフォームのテーブルに含まれていないフィールドについては抽出条件から除外するものとする。
【００２５】
次に、Ｓ５０１で生成したクエリを実行し（ステップＳ５０２）、データベースが返してきた抽出結果の複数のレコードをプログラムワークメモリ７０７上のレコード変数ＳＲに、レコード数を変数ＳＣに格納する（ステップＳ５０３）。ループ変数ｊを０で初期化し（ステップＳ５０４）、ｊがＳＣよりも小さいか判定し（ステップＳ５０５）、小さければ、ＳＲのｊ番目のレコード（０オリジン）をサブフォームに流し込み（ステップＳ５０６）、ｊをカウントアップし（ステップＳ５０７）、ステップＳ５０５に戻り、ＳＲのレコードがなくなるまでループして処理を行ったら、処理を抜ける。
【００２６】
上述したように、本実施形態によれば、データベースからの抽出結果のデータ中にメインフォームのデータが繰り返し入ることがなくなり、抽出結果の全体的なデータ量が小さくなる。特に、１度に膨大なデータを抽出する場合やネットワーク経由でデータベース装置に接続している場合、帳票作成処理での必要メモリが小さくて済んだり、データベースからのデータ転送時間が最小限で済むという効果がある。
【００２７】
また、別クエリ処理にすると抽出結果のデータ量は小さく出来るが、クエリ実行の回数が増えるので、別クエリ処理と単一クエリ処理とを切り替え可能とすることにより、使用可能メモリが大量にある場合やデータベースがローカル接続されている場合など、抽出結果のデータ量よりもクエリ回数の方が処理速度に大きく影響する環境に対しても対応することが出来るという効果がある。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態であるシステムの全体構成を示す図である。
【図２】ハードウェア構成を示すブロック図である。
【図３】本実施形態における処理手順を示すフローチャートである。
【図４】別クエリ処理の手順を示すフローチャートである。
【図５】サブフォームクエリ処理の手順を示すフローチャートである。
【図６】記憶媒体に格納された帳票作成プログラムの構成を示す図である。
【図７】プログラムが実行可能となった状態のメモリマップである。
【図８】ＤＢ接続情報の説明図である。
【図９】クエリ情報の説明図である。
【図１０】別クエリフラグ等のクエリ情報の設定画面の一例を示す図である。
【図１１】クエリ設定の設定画面の一例を示す図である。
【図１２】サブフォームを含む帳票の一例を示す図である。
【図１３】複数のテーブルから１つのクエリでサブフォームを含むフィールドデータを抽出する一例を示す図である。
【図１】
2005044175.tif 000003
【図２】
2005044175.tif 000004
【図３】
2005044175.tif 000005
【図４】
2005044175.tif 000006
【図５】
2005044175.tif 000007
【図６】
2005044175.tif 000008
【図７】
2005044175.tif 000009
【図８】
2005044175.tif 000010
【図９】
2005044175.tif 000011
【図１０】
2005044175.tif 000012
【図１１】
2005044175.tif 000013
【図１２】
2005044175.tif 000014
【図１３】
2005044175.tif 000015