• ベストアンサー

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

  • 【ACCESS】フォームのレコードソースのクエリを動的に書き直したときの、フォームの再描画

    ACCESS2002 帳票フォームのレコードソースにクエリを指定しています。 フォーム上のコマンドボタンを押したイベントで、その レコードソースとしているクエリのSQLを書き直しています。 問題は、その書き直したクエリをもとにして画面をもう一度 表示させなおしたい(リフレッシュさせたい)ということです。   docmd.close acForm,"フォーム名"   docmd.open "フォーム名" とすると、書き直したクエリの内容でフォームが表示されます。 フォームを閉じる→フォームを開くとしないで、フォームを リフレッシュさせる方法はないのでしょうか?

  • Access パスワード付きDBへの接続について

    お世話になります。 アクセスについて行き詰まりましたので質問をさせて下さい。 現在、Access2000にて開発を行っております。 フォームやクエリのみのファイル(A.mdb)と、DBのパスワード設定がされているファイル(B.mdb)があり、B.mdbはA.mdbのリンクテーブルとなっています。 A.mdbにはフォームが複数あり、フォームA上のボタンを押下するとDoCmd.Openform命令にてフォームBが立ち上がります。 フォームBではレコードソース(SELECT文)が設定されており、データが画面の各項目に表示された状態でフォームBが立ち上がる動きとなっています。 ここで問題なのですが、DBにパスワードが設定されているため、フォームBのレコードソースのSQL文が実行された時に「パスワードが正しくありません」というエラーが発生しフォームBを立ち上げることが出来ません。 フォームBのOpenイベントにDBへ接続するプログラム(OpenDatabase命令で4つ目の引数にパスワードを設定)を入れましたがエラーは変わりませんでした。 解決策をどなたかご存知でしたら、ご教授いただきたいと思います。 以上、よろしくお願い致します。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • oracle,sql-server,DB2,フリーDB

    oracle 10g sql-server 2005 DB2 フリーDB(mysqlなど) はどれがいいでしょうか? 一応3年ぐらい前までは開発現場にいたので一通り知っています。 すべて経験ありますが管理はしたことはありません。 価格ならフリーが一番でしょう。信頼性で言うとoracle でもコストが高い。 MSとくっつくならsql-serverだと思うのですが。 まだ社内でどの程度の規模になるかも把握し切れていませんが、 やはり無難にoraが一番でしょうか?? 後々に業務システムの開発をします。 javaにするかVB,delphiなどにするかも決まってません。 DB2なら一応資格も持っているんですけどね。 管理、構築の容易さなどそれぞれの特徴も教えてください。

  • Microsoft Accessのフォームについて

    不可能かもしれませんが、お願い致します。 Accessのフォームから、既存のクエリ(もしくはSQL文)の式を書き換える事は出来ますか?? もし可能であれば、教えて下さい!

  • ACCESSフォーム上のボタン押下時のエラー

    もう一つのACCESSデータベース(DB)から、別なDBに、フォーム、クエリー、テーブル等をコピーして貼り付けた後、貼り付けた先のフォームのボタンをクリックすると、「ファイルへのアクセスでエラーが発生しました。ネットワークへの接続が切断されている可能性があります。」のメッセージが表示されて、実行できません。解決方法をご存知の方は、アドバイスをお願いいたします。

  • ACCESSのフォームだけを起動する方法

    ACCESS2000のVBAにて、管理システムのようなものを作成しました。  このままクライアントに渡すと、新規にテーブルを作ったり、新規にクエリを作成したりと、せっかくのデータベース、レポートがぐちゃぐちゃになりそうな気がします。  そこで、おききしたいことがあります。   ・フォームだけを表示できないでしょうか。    ※ACCESS起動後、フォームだけが起動する。    その他、メニューは表示させない。    (テーブルからのデータ入力、フィールド追加、クエリ作成をできないようにする)    "F11"キーでのメニュー表示も無効にする。 データベースは、SQLからテーブルリンクしております。 どうぞよろしくお願い致します。

  • フォームからDBへの接続

    フォームからDBへのデータ挿入なんですが、どうしてもうまくいきません・・・。 MYSQLへの接続はうまくいくのですが・・・ <? $link=mysql_connect("localhost","****","::::"); mysql_select_db("@@@@@",$link); $sql=" insert into users( passwd, name, name_kana, seibetu, birthday, email, postal_code, xmpf, address1, address2 ) values( '$passwd', '$name', '$name_kana', '$seibetu', '$year-$month-$day', '$email', '$postal1', '$xmpf', '$address1', '$address2' )"; mysql_query($sql,$link); mysql_close($link); ?> 上記がソースです。 bithdayのフォールドはdatetimeで、年はyear月はmonth日はdayとしています なにかおかしいところありますか?

    • ベストアンサー
    • MySQL
  • ACCESSのフォームって?

    SQL言語を使って検索した結果をフォームに反映したいと思っているのですが、フォームには「ヘッダ」「詳細」「フッタ」がありこの違いがよく分かりません。 SQLだけで使う場合関係ないのでしょうか? 今まではMYSQL+PHP3を使っていましたが今回ローカルで動くデータベースが必要になりACCESSを使うことにしてみました。 変な書込みですいませんが宜しくお願いします。

  • PHP+MySQLでの排他処理とDBクローズ

    <環境> Apache1.3.37 PHP4.4.6 MySQL4.0.27 PHPで、掲示板などのスクリプト作成を勉強しています。 これまで、ログをログファイルとして保存するように作成しておりましたが、データベースに保存するように変更している途中です。 そこで、教えていただきたいのは下記の2点です。 ・ロック処理の必要性 →ログファイルを作成するタイプの場合、同時アクセスによるファイル破損を防ぐため、ロック処理が必要でした。DBに変更した場合も同様に必要なのでしょうか? ・DBのクローズ処理 →最小限のソースを以下に記します。9行目のクローズ処理は必ず必要でしょうか?また、エラーが発生した場合、7行目で処理が終わるのですが、この直前にもクローズ処理を記入する必要があるのでしょうか? 1)<?php 2)$db = mysql_connect(host,user,pass); 3)mysql_select_db(db-name,$db); 4)$query = "INSERT INTO table(id,name) VALUES('1','なまえ')"; 5)if (!(mysql_query($query))) { 6) print = "書き込みに失敗しました。"; 7) exit(); 8)} 9)mysql_close($db); 10)?> 宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう