Q172:アプリケーションを起動したと同時に、あらかじめ指定したSQLデータベースに接続するには、どうすれば良いでしょうか。、他
Q172-1:
この度、顧客情報、サポート対応履歴などを管理するツールを作成しようと、ライセンスを購入させて頂きました。早速、作成に取り組んでおりますが、理解が足らず不明な点が多々あります。お手数ですが、下記内容についてご教示頂きます様、お願いできますでしょうか。
【状況】
・自作の顧客管理システムを一新すべく、MZプラットフォームへ。
(よって、テーブルは完成されています)
・Microsoft SQL Serverを利用。
@データベース接続について
アプリケーションを起動したと同時に、あらかじめ指定したSQLデータベースに接続するには、どうすれば良いでしょうか。
FAQ:データベース87の「データベースアクセス3(機能拡張版SQLServer).mazx」を複合コンポーネントとして利用する考え方で合ってますでしょうか。
しかし、応用方法がわかりません・・・。
因みに、接続後はデータベースへ、参照と更新を行います。
A実現したい処理
項目Aにお客様の顧客番号を入力してエンターキーを押下すると、項目Bにお客様名、項目Cにお客様住所、項目Dにお客様電話番号が展開される。
展開された情報は編集して更新が可能。
※顧客番号、お客様名、お客様住所、お客様電話番号は、同一テーブル内に情報を保持した状態と仮定。
項目Aについて、下記内容でよろしいでしょうか?
項目A(数値入力フィールド)→アクションイベント→
接続コンポーネント:データベースアクセス(?)
起動メソッドSQL文を実行する(?)
取得方法:固定値(?)
メソッド/値:目的のSQL文(?)
項目B、項目C、項目Dについて、基本的に項目Aと考え方は一緒で、メソッド/値に仕込むべきSQL文のみが違ってくるとの認識で良いでしょうか?
B気になる事
FAQ「実現したい処理 67」で、質問文に、「規模が大きなアプリケーションを作成中だが、全ての機能をまとめるとロードするのに時間がかかる」と記載があります。
弊社でも、サポート対応履歴画面、顧客情報画面、保守契約情報画面、インストラクション履歴画面、カスタマイズ契約画面など、複数の情報参照・登録画面を作成したいと考えておりますが、この場合、FAQ「実現したい処理
67」のように、各画面で独立したアプリケーションを作成したほうが、パフォーマンスが良いのでしょうか。
A172-1:
> @データベース接続について
>アプリケーションを起動したと同時に、あらかじめ指定したSQLデータベースに接続するには、どうすれば良いでしょうか。
>
>FAQ:データベース87の「データベースアクセス3(機能拡張版SQLServer).mazx」を複合コンポーネントとして利用する考え方で合ってますでしょうか。
最もシンプルな設定は[データベースアクセス]コンポーネントのメソッド
「データベースに接続する(String,String,String,String)」の引数に「取得方法:固定値」で「メソッド/値」欄に接続文字列を入力しておくものです。
これをアプリケーション開始イベントに繋げます。
ですが接続時に何かエラーがあると、同じイベントに繋がる後ろの処理が行われない可能性もあります。
もちろん接続機能を複合コンポーネントに入れて頂いて結構ですが、サンプルの「データベース3(機能拡張版)」は、そのままご自分のデータベースの接続をお試し頂けるよう用意しています。ファイルサイズも大きいので、複合コンポーネントに入れて、これをお使いになるのはお勧めしません。
『データベースアクセスチュートリアル』の16Pまでがご参考になるかと存じます。ご参考までにサンプルファイルを添付致します。
> A実現したい処理
>項目Aについて、下記内容でよろしいでしょうか?
>
>項目A(数値入力フィールド)→アクションイベント→
>接続コンポーネント:データベースアクセス(?)
>起動メソッドSQL文を実行する(?)
>取得方法:固定値(?)
>メソッド/値:目的のSQL文(?)
結構です。
> 項目B、項目C、項目Dについて、基本的に項目Aと考え方は一緒で、メソッド/値に仕込むべきSQL文のみが違ってくるとの認識で良いでしょうか?
1)「項目B,C,Dを検索条件として検索する場合」という意味なら、結構です。
2)例えば「SELECT koB,koC,koD FROM TABLE WHERE custnum='A'」というSQL
文を実行すると[データベースアクセス]コンポーネントから「データ生成イベント」が発生し、テーブル型のデータが取得できます。
[テキストフィールド] 等に表示したい場合には、一旦取得したデータを[テーブル格納変数]等に入れ、それから振分けます。
項目Aを条件に検索した後、項目B,C,Dについても検索が必要かという意味でしたら、上記のようになりますので不要です。
> B気になる事
>各画面で独立したアプリケーションを作成したほうが、パフォーマンスが良いのでしょうか。
これは大変漠然とした回答になってしまいますが、「場合による」としか申し上げられません。
非常に関連性が高い機能、画面を持ったものですと、少々ファイルサイズが大きくなっても一つのファイルの方が良いですし、例えば「受注管理」と「生産管理」で独立させても、手間取らず問題ないというような場合には、分けて保存することも考えられます。
ファイルサイズが大きくなる要因ですが、「画面構成部品(水色のアイコンが付いたもの)」にデータを設定すると、クリア処理を行わない限り、そのままアプリケーションファイルに保存されます。
(その他に[テーブルサブセットフィルタ]もメソッド「init()」でクリアする必要があります。)
サンプルではファイルサイズが小さいので設定していないものも多いのですが、実用のアプリケーションでは、処理に差支えるもの以外は、終了時にクリア処理を設定することをお勧めしております。
別々にファイル保存した場合、[外部プログラム通信]コンポーネントを使って起動することなどが考えられます。
どうぞ今後ともご不明な点がございましたら、ご連絡を頂ければ幸いです。
よろしくお願い申し上げます。
関連ファイル:データベースアクセス0改.mzax、データベースアクセス2改.mzax