• ベストアンサー

ACCESSフォームでDB操作するには

Access2002で、フォームを作ってDBを操作しようと思って、ためしにフォームを作ってみました。 ところが、プログラム開発は10年近く前にやったのが最終で、 オープン系の開発経験が希薄なため、この後がさっぱりわかりません。 一応、クエリを作ってみたりしたのですが、さっぱり・・・。 フォームはDB構造とは、異なる設計にしたので、 ACCESSの解説書にあるような単純な動作を構築することはできません。 VBAを使わないとできないと思うのですが、いまいち書籍の説明がわかりません。 データベースをオープンして、値を処理させて、 ポインタを移動させて、DBに書き込んで、DBをクローズする、汎用機系の処理では、理解が及びません。 一応、SQLの知識はあるつもりだったのですが・・・。 何かこれから先に進めるために、ヒントとなるようなものは無いでしょうか・・。 質問自体が、あいまいで、恐縮してしまいますが、何とか前に進めたいので、どうか、何でもいいので、アドバイスよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.1

フォームとDBは同じ*.mdbファイルですよね? でしたら、DBアクセスの基本は以下です。 Dim adoCON As ADODB.Connection Dim adoRS As ADODB.Recordset Dim strSQL As String Set adoCON = Application.CurrentProject.Connection strSQL = "select * from テーブル名" Set adoRS = adoCON.Execute(strSQL) adoRS.Close adoCON.Close あとは、必要に応じてstrSQLを変更し、コミットやロールバックを実行すればOKです。 詳しくは、下記URLを参照してください。 http://oshiete.nikkeibp.co.jp/kotaeru_reply.php3?q=3536631

groovyreality
質問者

お礼

ありがとうございます。 いろいろ参考にさせていただいて考えていくうちに、プログラムの考え方が、異なることを思い出しました。 考え方が古かったので、バッチ処理の思考になっていて、わからなくなっていたのです。 参照ページを見ているうちに、リアル処理の考え方を思い出してきました。 私の経験の多いリアル処理は、プログラム起動時に、DBとの接続をしたまま、処理を行うタイプだったので、困惑してしまったようです。 試しに、その思い出した発想で、モジュール単位に、接続、オープン、処理、クローズ、切断という流れでトランザクションが完結する前提で作り換えてみたら、どうしてもうまくいかなかった処理が、30分で正常動作しました。 参考になりました。ありがとうございました。 馬鹿馬鹿しい質問をして申しわけありませんでした。

その他の回答 (1)

回答No.2

http://www.geocities.jp/cbc_vbnet/ADO/setuzoku.html http://www.geocities.jp/cbc_vbnet/top/nyumon.html http://www.moug.net/tech/acvba/index.htm http://www.accessclub.jp/ http://www.happy2-island.com/access/gogo03/capter00302.shtml ADOを使って接続して SQLで Recordsetを操作してください 何を読んで 何を調べたのでしょうか 開いて 書いて 閉じる のは基本動作です 自分で調べて 勉強する部分です 初心者はまず解説書の通りに作ってみてください Accessは使えるのでしょうか VBAはAccess自体がわからないと使えません 学校などで勉強しなおすことをすすめます 

groovyreality
質問者

お礼

ありがとうございました。 開いて 書いて 閉じる の処理で、ディレード処理や、バッチ処理の経験と、10年のブランクが、思い違いをしてしまったようです。 今の参考書では、モジュール単位でトランザクションが完結するのが当たり前で、モジュール内で「開いて 書いて 閉じる」を行うように書かれています。 マルチトランザクションが当然だったのですが、ホスト時代の経験がシングルタスク時代のリアル処理を思い出させて、勘違いさせてしまったのかもしれません。 リアルプログラムでも、ロックしたまま処理するようなプログラム構造になっていましたので。 今ではマルチタスクが当たり前でありえないのですが、ディレード処理などの、複雑な負荷回避処理プログラムを考えていたため、こんがらがってしまったのでしょう。 ご指摘をうけて対応してみて、すぐに動作したので、一安心です。 ありがとうございました。

関連するQ&A