Q72:共通のデータベースについてアプリケーションを介さずに複合コンポーネント側でデータベースアクセスの処理をおこなうためにはどのようにすればよいでしょうか。
Q72-1:
アプリケーションでメインメニューを作成
複合コンポーネントでメインメニューから呼ばれる画面を作成
上記の構成でアプリケーションと複合コンポーネントを構築していますが、共通のデータベースについてアプリケーションを介さずに複合コンポーネント側でデータベースアクセスの処理をおこなうためにはどのようにすればよいでしょうか。あるいはデータベースアクセスにはアプリケーションが必要なのでしょうか。
A72-1:
必ずしもアプリケーションビルダー最上階層に[データベースアクセス]コンポーネントを置く必要はございません。複合コンポーネント内に含めて頂いて結構です。
あまりお勧めはしませんが、各複合コンポーネント内に別個の[データベースアクセス]を使用することも可能ではあります。但しその場合には、それぞれの[データベースアクセス]から同時接続となる恐れも出てきます。
純粋にアプリケーションを介さずとはいきませんが、[データベースアクセス]を含んだ一つの複合コンポーネントに接続/切断、SQL実行などの機能を持たせ、他の複合コンポーネントと検索結果をやりとりするということも考えられます。
複合コンポーネント内に含めた後、どのような設計になるかは、それぞれ違うかと存じます。
Q72-2:
おこないたいことが下記の内容のことですので再度質問させてください。
> 純粋にアプリケーションを介さずとはいきませんが、[データベースアクセス]を含んだ一つの複合コンポーネントに接続/切断、SQL実行などの機能を持たせ、他の複合コンポーネントと検索結果をやりとりするということも考えられます
複合コンポーネント側で具体的にどのようにすれば上記のことが実現できますでしょうか、ご教示いただけませんでしょうか。
A72-2:
[データベースコンポーネント]を複合コンポーネント内に含むということですが、複合コンポーネント間の接続はアプリケーションビルダー上位階層に設定するということで宜しいでしょうか。
本文末尾の関連ファイルは「データベースアクセスチュートリアル」のサンプルファイルを簡単に改変してみたものですが、このようなイメージのものとして説明を進めます。
特に複合コンポーネント使用時に多く使うコンポーネントは次のものがあります。
@[イベント生成]
A[ファンクション]、[サブルーチン]
@[イベント生成]は『データベースチュートリアル』でも使用しています。必要に応じて発生させたいイベントをメソッドで選びます。(発生させるイベントの選択はあまり厳密に考えなくても結構です)発生させたイベントが伝播されると、引数として設定したデータは、上位階層ではイベント内包データとイベント番号として利用できます。
A[サブルーチン]は最上位階層でも処理を纏めるために使いますが、複合コンポーネント内でも効率よく処理を呼び出すために、頻繁に使われます。
[ファンクション]も[サブルーチン]と同じく処理を纏める目的で使いますが、上位の階層から引数を引き渡して、処理を行うことができます。
また、[ファンクション]が呼び出されると処理要求イベントが発生し、処理要求イベントに繋がる処理のうち一番最後に実行した処理の値は戻り値として返します。上位の階層で引数を渡し、複合コンポーネント内で処理を行い、上位の階層で戻り値を取得するといったことも可能です。
上記のコンポーネントについては『複合コンポーネントチュートリアル』内に説明がございますので、どうぞご覧ください。
また『購買管理アプリケーション作成チュートリアル』では、データベース操作機能の複合コンポーネントを使用し、アプリケーションの作成を進めています。
[イベント生成]を活用していますので、宜しければご覧ください。
処理の方法は特別に決まりは無く、チュートリアル通りに行わなくてはいけないということはございません。また、今回の回答がご質問の意図とずれている場合には、大変お手数ですが、再度ご連絡を頂ければ幸いです。
関連ファイル:データベースアクセス改変.mzax
Q72-3:
まだ解決ができておりませんので再度質問させていただけませんでしょうか。質問内容を簡単に整理しますと、
アプリケーション(メインメニュー)・・・(a)
複合コンポーネント(メインメニューから呼ばれる画面)・・・(b)
データベースにアクセス専用の複合コンポーネント・・・(c)
上記(a)(b)(c)のようにプログラムを作成し(c)にだけデータベースアクセスコンポーネントを定義して、(a)および(b)からそれぞれ(c)を呼んでデータベースアクセスしたいのですが、どのように定義をすれば可能でしょうか。
A72-3:
お問い合わせの内容そのもののチュートリアルはございませんが、付属の『データベースアクセスチュートリアル』、『複合コンポーネントチュートリアル』、『購買管理チュートリアル』(「ドキュメントインデックス」では「目的別テキスト」の項にあります)で複合コンポーネントを使用していますので、ご参考になる箇所も多くあるかと存じます。
[サブルーチン]、[ファンクション]、[イベント生成]、複合コンポーネントの公開メソッドなどを使って、実現できるかと考えております。
宜しければですが、例えば『データベースアクセスチュートリアル』のサンプルファイルを変更し、お問い合わせの内容に近づけるとして、どのような点が分り難いかお知らせ頂けると、回答がし易く大変助かります。
各チュートリアルもテキストと同時にAP_DATA\Tutorialフォルダにあるサンプルファイルと照し合わせてご覧頂くと、判り易いかと存じます。