• 締切済み

UIとDatabaseの接続

VB6とAccess(ADO)で会計システムを作っています。ユ ーザーから受け取る値をデータベースに直接Updateする 前に、VB側で入力規則を作りたいと思うのですが、どこ に持ってくればいいのかがわかりません。 中途半端なプログラミングの知識しかないのですが、イ ンターフェィス、ビジネスロジック、そしてデータベー スに分けてシステムを構築してみたいのです。自分なり には、テキストボックスから何か(クラス?)に値を確 保してから、DBにUpdateするのが一番わかりやすいと思 ったのですが、クラスの根本的な考えとは少し違うと思 い、質問しました。 よろしくお願いします。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

再びmaruru01です。 VBは、基本的にフォームやコントロールのイベントに、希望する動作を書くものです。 イベントというのは、「コマンドボタンをクリックした」や、「テキストボックスに文字を入力した」などのユーザーの操作で発生するものです。 つまり、ユーザーの操作に対応してある動作が行われるという形態です。 ちなみにこういうプログラム形態を「イベントドリブン型」と言います。 また、一定の動作を一まとめにしたものをプロシージャと言います。クリックなどのイベントに対応する動作のまとまりもプロシージャの一種で、特にこれをイベントプロシージャと言います。 また、プロシージャはExcelのSUMのような関数と似たようなもので、その関数の動作を自分で書くわけです。 結果をなんらかの値として返すのがExcelの関数などと同じFunctionプロシージャで、値を返さないのが、Subプロシージャです。例えば、ラベルの色を変えるという動作は値を返しません。 通常は各イベントごとにコードを書いていきますが、同じ動作が各所に何度も出てくる場合は、それをプロシージャとしてまとめておいて、各所ではそのプロシージャを呼び出す(基本的には1行ですむ)方が効率的です。つまり共通化です。 この共通化プロシージャは、たいていは、標準モジュールにPublicで宣言して置いておきます。 ところで、フォームのデザインが変わるというのはどういうことでしょうか。 開発段階でいろいろと変わることはあっても、完成形というのはあるのではないですか。 仮にテキストボックスがたくさんあるというなら、まさに上記のようなプロシージャの共通化が効率的なわけです。 逆にVBのコーディングというのは、いかにうまく共通化するかということが重要なんでしょう。 ちなみに私と、chi-chan-n_nさんの内容は十分VBでAccessで出来ます。 では。

northcurlcurl
質問者

お礼

再度の回答、ありがとうございました。自分で色々調べていくうちに、どの様なシステムを作りたいのかが見えてきました。以下のサイトに書かれているように、3 tier アプリケーションが自分の理想とするシステムと、一致することが判りました。今回は、本当にありがとうございました。http://www.zdnet.co.jp/help/howto/win/win2000/0007special/complus_vb/

noname#62349
noname#62349
回答No.2

入力チェックのためのプロシジャを作成してしまうと楽ですよ。 そしてmaruru01さんのおっしゃる場所でそのプロシジャを callなどで呼び出すようにすればコーディングが楽になります。 テキストボックスの値を引数として渡してもいいかと思います。 あと値を変数に格納した方が、ロジックを共通化できるし ソースが短くなったりわかりやすくなったり利点は多いと思います。

northcurlcurl
質問者

補足

chi-chan-n_n様、回答ありがとうございます。 chi-chan-n_n様のいうプロシージャというのはストアドプロシージャと同じものでしょうか?なんとなく難しそうなイメージがあり、今まで手を出したことがなかったのですが、@ITで再度調べたところ、まさにこれでした。 本題ですが、VBとAccessだけでもそのようなことができるのでしょうか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 作成した入力規則に従った入力規制を記述する場所ということでしょうか。 ・キー入力される1文字ごとにチェックするなら、テキストボックスのKey_Pressイベント。 ・文字入力がキー入力に限らない場合(コピー&ペーストなど)は、テキストボックスのChangeイベント。 ・最終的には、[実行]ボタンなどを用意して、そこでテキストボックスの内容をチェック。 ・それでOKなら、データベースに接続して更新処理を行う。 というところでしょうか。 ちなみにテキストボックスの値の確保(保持)は、普通に変数に格納してやればいいと思いますが。 では。

northcurlcurl
質問者

補足

早速の回答ありがとうございます。maruru01さんのやり方ですと、フォームに貼り付けたコントロール類(例えば、テキストボックス)に入力制御を直接させることになりますよね。ということは、フォームのデザインが変わるたびに、そのような入力制御を一個一個設定しなくてはならなくなるので、VBの別の場所で、入力規制をしようと思います。何か良い案はありますでしょうか?お願いします。

関連するQ&A

  • VB6でSQLServerへADO接続するとOPENがすごく遅いんです。

    お世話になってます。 今、VB6.0で作成したシステム(ADOでACCESS2000に接続)をSQLServerに移行しています。 しかしDBの初回OPEN時に5秒くらいかかってしまいます。 原因を探しているのですが、どうしても見つかりません。 誰かご存知の方がいらっしゃいましたら、ご教示お願いします。 開発環境は以下の通りです。 OS:WindowsXP SP2 開発言語:VB6.0 SP5 データベース:SQLServer2005 ADO:ADO2.5

  • 接続型と非接続型ではどちらが良いか

    お世話になります。 社内で使うシステムを開発しています。 最近、やっと開発ツールをVB6からVB2005へ移行しました。 そこで質問ですが、データベースへの接続で、「接続型」と「非接続型」ではどちらが処理がスムーズなのでしょうか。 環境はクライアントがXP、サーバーはWindows2003Server、データベースはSqlServer2000。 各営業所間はVPNで結ばれています。クライアントの数は30位です。 今まで開発して使用しているシステムはVB6で作られたものなので、システムの起動と同時にデータベースに接続し、終了時に切断する「接続型」です。 せっかくADO.NETに移行するのだから、「非接続型」にしようかと思いますが、WEBを使用するわけでもないので、処理が早い方を使おうと思います。 よろしくお願いいたします。

  • ADO.NETのバージョンについて

    ADO.NETのバージョンについて教えてください。 ADO.NETと、ADO.NET2.0と、ADO.NET3.5の それぞれの違いは何でしょうか。 今度、仕事でデータベースプログラミングにに携わる事になり、参考書を探していますが、どのバージョンの本を購入したら良いか迷っております。 OSはWindowsVistaで、IDEはVB2008です。 サーバーはSQLServer2005です。 よろしくお願い致します。

  • データベースロック(VB)

    お世話になってます。 VB6.0+ACCESS97 ADOを使用してます。 複数ユーザーで使用する為、データベースにロックをかけたいのですが いろいろ本なので調べましたところDAOなら set db = DBEngine.OpenDatabase("c:\~~.mdb",True) というようにExclusiveプロパティをTrueに設定すれば いいみたいですが。これと同じことをADOでは どのようにすればよろしいのでしょうか? VB初心者の為、ADOしかわからないもので(^_^; なにか良いアドバイスがあればお願いします。

  • Excel上の競馬データをMySQに格納

    競馬のデータベースを作成してるんですが、 VB6でExcel2002上にあるhttp://keiba.nifty.com/db/race.php?race=200505030410  のような表のデータを MySQL4内に作ってあるテーブルに 格納したいのですが、どうしたらいいんですか? MySQLとVBはADO接続できました。

  • VB2008 Expressで、Excelファイルへのアクセスについて

    VB2008 Expressで、Excelファイルへのアクセスについて質問します。 プログラミングが本業ではありませんが、社内で使用するツールとして、VB6+ADOで、AccessのMDBを使ったDBソフトを作った経験はあります。 そろそろ、.netを勉強しようと思うのですが、手元にあるのは、VB2008のExpressバージョンです。 これを使って、ExcelのxlsをDBのように扱うことは可能なのでしょうか? 「DBのように」というのは、xlsファイルをレコードセットに格納し、条件にあったレコードを抽出することを想定しています。 同様なことが、ExcelVBAで可能ならば、それでもいいのですが。 よろしくお願いします。

  • ACCSESSのデータベースオブジェクトについて

    ACCESSの初心者ですが、 データベースオブジェクトにDAO・ADO・ADOXとありますが、 使用する環境にもよると思いますが、どれを使うのが、妥当なのでしょうか。 ---------------------環境---------------------- サーバーにACCESSのDBを置き。 2~3人程度で使用する超小規模システムで利用したい。 WindowsでExcelとの連携あり。 ----------------------------------------------- ※SELECT/INSERT/UPDATEが基本が思っていたので  やり方が多々あり、びっくりしてしまいました。

  • ADO.NETへの対応

    ADO.NETへの対応をしています。接続先がIBM DB2を使用しています。 クラスは、System.Data.Odbcは使用するべきでしょうか? それとも、System.Data.SqlClientを使用するべきでしょうか? 宜しくお願いします。

  • レコードセットの値 SelectとINSERT,UPDATE,Deleteで異なる?

    VB6でSQL Server2005をADOでアクセスしていますが、基本的なことですが、SELECT文の場合はrs.closeしてもエラーになりませんが、INSERT,UPDATE,DELETEの場合は、rs.closeとすると、 実行時エラー3704 オブジェクトが閉じている場合は、操作は許可されません。 というエラーメッセージが表示されます。 SQLは以下のように実行しています。 Call rs.Open(cobSQL.Text, cn, adLockOptimistic) VB6でSQL SERVER2005(もしくは2000)でデータベースアプリを作成するのに参考になる良書などご存知でしたら教えてください。 また、VB6でADOは、ネイティブにSQL Server2005にアクセスできるのでしょうか?まだADOやデータベースの概念が良くわかっていないため、質問自体がおかしいかもしれませんが、VB6で高速にSQL SERVER 2005で処理させたいのが私の現時点での目標です。

  • MSDEをスタンドアロンで使用しているのにネットワークエラー

    MSDE1.0をスタンドアロン端末で使用しておりますが、アプリ(VB6で作成)を起動した状態で、LANケーブルを挿し直すと、ネットワークエラーが発生してしまい、異常終了します。 どなたか、解決方法を教えていただけませんでしょうか。 なお、当方の環境は、 OS:WindowsXP SP2 プログラミングツール:VB6.0 データベース:MSDE1.0 SP4(SP2でも同様でした。) データベースの接続方法は、ADOを使用しています。 以上、よろしくお願いします。