- 締切済み
UIとDatabaseの接続
VB6とAccess(ADO)で会計システムを作っています。ユ ーザーから受け取る値をデータベースに直接Updateする 前に、VB側で入力規則を作りたいと思うのですが、どこ に持ってくればいいのかがわかりません。 中途半端なプログラミングの知識しかないのですが、イ ンターフェィス、ビジネスロジック、そしてデータベー スに分けてシステムを構築してみたいのです。自分なり には、テキストボックスから何か(クラス?)に値を確 保してから、DBにUpdateするのが一番わかりやすいと思 ったのですが、クラスの根本的な考えとは少し違うと思 い、質問しました。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
再びmaruru01です。 VBは、基本的にフォームやコントロールのイベントに、希望する動作を書くものです。 イベントというのは、「コマンドボタンをクリックした」や、「テキストボックスに文字を入力した」などのユーザーの操作で発生するものです。 つまり、ユーザーの操作に対応してある動作が行われるという形態です。 ちなみにこういうプログラム形態を「イベントドリブン型」と言います。 また、一定の動作を一まとめにしたものをプロシージャと言います。クリックなどのイベントに対応する動作のまとまりもプロシージャの一種で、特にこれをイベントプロシージャと言います。 また、プロシージャはExcelのSUMのような関数と似たようなもので、その関数の動作を自分で書くわけです。 結果をなんらかの値として返すのがExcelの関数などと同じFunctionプロシージャで、値を返さないのが、Subプロシージャです。例えば、ラベルの色を変えるという動作は値を返しません。 通常は各イベントごとにコードを書いていきますが、同じ動作が各所に何度も出てくる場合は、それをプロシージャとしてまとめておいて、各所ではそのプロシージャを呼び出す(基本的には1行ですむ)方が効率的です。つまり共通化です。 この共通化プロシージャは、たいていは、標準モジュールにPublicで宣言して置いておきます。 ところで、フォームのデザインが変わるというのはどういうことでしょうか。 開発段階でいろいろと変わることはあっても、完成形というのはあるのではないですか。 仮にテキストボックスがたくさんあるというなら、まさに上記のようなプロシージャの共通化が効率的なわけです。 逆にVBのコーディングというのは、いかにうまく共通化するかということが重要なんでしょう。 ちなみに私と、chi-chan-n_nさんの内容は十分VBでAccessで出来ます。 では。
入力チェックのためのプロシジャを作成してしまうと楽ですよ。 そしてmaruru01さんのおっしゃる場所でそのプロシジャを callなどで呼び出すようにすればコーディングが楽になります。 テキストボックスの値を引数として渡してもいいかと思います。 あと値を変数に格納した方が、ロジックを共通化できるし ソースが短くなったりわかりやすくなったり利点は多いと思います。
補足
chi-chan-n_n様、回答ありがとうございます。 chi-chan-n_n様のいうプロシージャというのはストアドプロシージャと同じものでしょうか?なんとなく難しそうなイメージがあり、今まで手を出したことがなかったのですが、@ITで再度調べたところ、まさにこれでした。 本題ですが、VBとAccessだけでもそのようなことができるのでしょうか?
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 作成した入力規則に従った入力規制を記述する場所ということでしょうか。 ・キー入力される1文字ごとにチェックするなら、テキストボックスのKey_Pressイベント。 ・文字入力がキー入力に限らない場合(コピー&ペーストなど)は、テキストボックスのChangeイベント。 ・最終的には、[実行]ボタンなどを用意して、そこでテキストボックスの内容をチェック。 ・それでOKなら、データベースに接続して更新処理を行う。 というところでしょうか。 ちなみにテキストボックスの値の確保(保持)は、普通に変数に格納してやればいいと思いますが。 では。
補足
早速の回答ありがとうございます。maruru01さんのやり方ですと、フォームに貼り付けたコントロール類(例えば、テキストボックス)に入力制御を直接させることになりますよね。ということは、フォームのデザインが変わるたびに、そのような入力制御を一個一個設定しなくてはならなくなるので、VBの別の場所で、入力規制をしようと思います。何か良い案はありますでしょうか?お願いします。
お礼
再度の回答、ありがとうございました。自分で色々調べていくうちに、どの様なシステムを作りたいのかが見えてきました。以下のサイトに書かれているように、3 tier アプリケーションが自分の理想とするシステムと、一致することが判りました。今回は、本当にありがとうございました。http://www.zdnet.co.jp/help/howto/win/win2000/0007special/complus_vb/