• ベストアンサー

ACCESSの学び方について

初歩的な質問で失礼いたします。 私は人から教えてもらったり参考書をみたりしてACCESSを勉強している者です。まだ全然駄目なんですが、自分のやり方が正しいかどうか教えて下さいm(__)m たとえば、シンプルな顧客情報入力画面を作成したいとき、私は (1)テーブルを作成(T_1) (2)T_1を基に入力フォームを作成(F_1) (3)T_1にデータが蓄積されていき、それを基に検索したり削除したりする。 ・・といった感じです。 しかし、本やネットで見てみると他にも色々方法がありますよね。 たとえば、 (1)テーブルを作成(T_1) (2)T_1を基に入力フォームを作成(F_1) (3)F_1の追加ボタンを押下すると、追加クエリと削除クエリが実行される。 追加クエリ・・・新たなテーブルが作成される(T_2) 削除クエリ・・・T_1のデータを削除 (4)T_2にデータが蓄積されていき、それを基に検索したり削除したりする。 はたまた、こんなまどろっこしいことしないで、フォームを作って それに長いプログラムをあてはめる(InsertRecordメソッドとか?) があるかと思われます。 長くなって申し訳ありませんが、質問をまとめます。 <1>テーブルやフォームをわざわざ作って組み立てていく方法はあまり好ましくないのでしょうか? <2>テーブルやフォームを作成して組み立てていく場合、上の例ではどちらが正解なのでしょうか。また、もっとこうしたほうがいい!というアドバイスをいただけたら幸いです。

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

  • ベストアンサー
  • nikenike1
  • ベストアンサー率44% (76/169)
回答No.3

再度アドバイスいたします。 ACCESSのMDB作成は、データやクエリ、フォーム、レポート・・・それらを動かすマクロ等・・・ 手法はたくさんあるので、開発規模が小さいうちに色々なことを試してみてください。 (開発規模が大きくなると、先に回答された方の言うとおり、データベースやクエリの設計がシビアになっていきます) 以下 補足の回答の一例です。 ・データ入力時 入力用テーブル+フォームで蓄積用テーブルに対して「追加クエリ」 例:http://www.seta.media.ryukoku.ac.jp/manual/office/access/query/add_query.html ・データ検索時 蓄積用テーブルを元に検索条件指定を指定して「テーブル作成クエリ」→検索結果用テーブル+フォーム ※テーブル作成クエリにパラメータを指定する方法などを使用 ※データを不注意に破壊(削除、更新)しない自信があれば、当初のとおり蓄積用テーブルを参照しても良いかもしれません。 例:http://www.sk-access.com/Syo_Query/SqA009_Parameter.html ・データ削除や更新 検索結果用テーブルで蓄積用テーブルに対して、「削除クエリ」や「更新クエリ」を使用。(あらかじめ顧客コードなど唯一無二のフィールド(キー)を作っておく必要があります。) 例:http://www.nurs.or.jp/~ppoy/access/access/acQ010.html 例: http://makotowatana.ld.infoseek.co.jp/access/achowChangeRecordsAsGroupUpdateQueryS.htm#start 上記でよく使うクエリの種類は一通り使用するので、慣れてみてはいかがでしょうか?

nekocya
質問者

お礼

再度ありがとうございます!!! リンク先ともて分かりやすかったです。 書いてくれた事を一つずつ繰り返しやってみます!! ご丁寧にありがとうございました(__)

その他の回答 (2)

noname#182251
noname#182251
回答No.2

漠然とした印象ですが、根本的な考えから(DBに関するイメージ)を替えた方がよいように思います。 DBはデータベースの名称が示すとおり、「最初にデータありき」の世界です。とくにRDB(リレーショナル・データベース。アクセスもそれに該当)では、相互に関係を持ったデータ(テーブル)群を土台として構築されます。 この土台に対し、UI(ユーザーインターフェース)を実現するのがフォームやレポートです。 フォームやレポートが適切に動くようにデータ群との橋渡し(選択、更新、追加、削除)をするのがクエリ。 従って 1.アクセスで何を処理したいか 2.それに使用するデータは何か 3.テーブル間の関係などに配慮しながらテーブルの設計 4.UIとしてフォームやレポートの作成(この段階でクエリを駆使します) 通常上記の流れは一回で終わらず、業務その他をこなしてゆく課程で、「あれもしたい、これもしたい」で拡大してゆきます。テーブルも増えるし、相互の関係見直しが必要だったり。

nekocya
質問者

補足

なるほどです。おっしゃる通り、ちょっととらえ方が間違ってた ようです。とても勉強になりました。 ありがとうございました!!

  • nikenike1
  • ベストアンサー率44% (76/169)
回答No.1

私の経験上からの回答(というかアドバイス)です。 Accessの用途は 個人用→複数人用→中規模・・・ と徐々に広がっていくものです。慣れてきたら作成初期の段階で第3者にわかりやすく一般的な造りにしておくのが無難かと思います。 <1>テーブルやフォームをわざわざ作って・・・ ほかのユーザに使用してもらう点では良いと思います。 <2>テーブルやフォームを作成して組み立てていく場合・・・ 後者が正解です。 これは将来データ蓄積テーブルが外部データベース(別のMDBやオラクルとかのテーブル→※)になった場合、思わぬ上書きや削除から蓄積部分を守るため、一般的にデータ蓄積部分と入力部分は分けて作ります。(さらに検索結果を表示する場合も別テーブル・フォームにするのが一般的です。) ※複数人でMDBを使用する場合データ蓄積テーブルを同時に開くと不整合やロックがかかるため、データ蓄積部分とデータ操作部分を分ける手法です。

nekocya
質問者

補足

ものすごく分かりやすいアドバイスありがとうございました! 非常に勉強になりました。 ひとつお聞きしたいのですが、「さらに検索結果を表示する場合も別テーブル・フォームにするのが一般的です。」とありますが、蓄積テーブルを基に検索フォームを作らないほうがいいってことですよね? そうなると、蓄積テーブルと同じテーブルをどこかのタイミングで作成しておけばいいのかなって思うのですが、そのやり方のヒントなど教えていただけませんでしょうか。 申し訳ありません。

関連するQ&A

  • Access2010についての質問です。

    アクセス「超」初心者です。 あるクエリ上のデータを検索(抽出?)して、フォームに反映させたいのですが、基本的なところで躓いております。 クエリ【Q基本データ】にあるフィールドは [階] [場所] [物] です。 [階][場所]は、別にテーブルがあり、そこから選ぶようになっています。 (→【T階テーブル】【T場所テーブル】) このクエリを基に作成したフォーム【F基本データ】上で、検索を行いたいのです。 フォーム【F基本データ】のヘッダー部分に、 テキストボックスを2つ[階検索][場所検索]と ボタンを1つ[検索] それぞれ配置し検索を行えるようにしたいのですが・・・ (テキストボックスはそれぞれ【T階テーブル】【T場所テーブル】からコンボボックスで選ぶようにしています) [検索]ボタン > プロパティシート > イベント > クリック時 の埋め込みマクロにアクション「フォームを開く」を入力していけば良いのでしょうか??? テキストボックスが2つだとマクロでは無理とか??? テキストボックス1つにつき、ボタンを1つ配置したら良いのか??? ご教授いただけましたら幸いです。

  • Accessのフォームで

    Accessで2つほど質問いたします。 (1)テーブルにフィールドを追加したのですがフォーム上でそのフィールドが追加できません(プロパティで選択できない)、多分クエリーを経由してフォームを作成したのですが、どのクエリーだかわからなくなってしまいました、参照しているクエリーがどれなのかを調べる方法を教えてください。 (2)検索フォームを作成して入力した文字を含む検索をしたいのですが どのようにしたら良いのでしょうか、今は入力の文字列の最初と最後に「 * 」を入力して検索しています。

  • クエリを基にしたフォームでテーブルにレコードを追加したい

    よろしくご教授ください。 商品の在庫場所の検索システムを作成しています。 テーブルは「T商品(商品コード、商品名、在庫場所)」と「T在庫場所(在庫場所ID、在庫場所)」があり、それを基にクエリ「Q商品在庫場所(商品コード、商品名、在庫場所)」を作成しました。  エクセルデータからなんとか先の2つのテーブルを作成したのですが、将来新しい商品が入ってきたり、在庫場所変更に備えて、フォームにて追加・編集できる方法を考えています。何とか「Q商品在庫場所」を基に「F商品在庫場所」を作ってはみたのですが、入力しようとしても何も入力できません。編集ロックがかかっている様子もありません。リレーションが問題なのでしょうか?  「Q商品在庫」で入力したデータを、2つのテーブルのそれぞれのレコードとして蓄積することは可能なのでしょうか?  クエリのデザインビューでは『「T在庫場所」1→∞「T商品」』となっています。  よろしくお願いします。

  • Accessでフォームからレコードの追加について

    Access2016をWindows10で利用しています。 あるテーブルの単票形式のフォームをフォームウィザードから作成しました。 入力規則などがテーブルの各列の設定に沿って作成されていてとても便利なのですが、フォームにいくつか値を入れた時点でレコードが新規追加されてしまいます。 レコードの追加を、すべての入力が終わって「新規追加」ボタン(あとから自分で作成)を押してから行いたいです。 レコードウィザードを使わずにフォームを作成し、フォームの値とクエリを結び付けてボタン押下時にクエリを実行する、というフォームにすれば実現できると思うのですが、それはなかなか手間がかかってしまうので出来るだけ簡便に実現できたらと考えています。 細かい話なので参考ページ、あるいはヒントになる検索キーワードを教えていただけないでしょうか m(‗ ‗)m ?

  • Access2007 クエリが読み取り専用になってしまう

    Access初心者です。 3つのテーブルのデータ(全て)をクエリに抽出して、そのクエリからフォームを作成し、フォーム上からデータ入力をしていきたいと考えております。 しかし、上記方法で作成したフォームは入力ができなく、ヘルプで調べたらフォームが読み取り専用になっているようでした。 いろいろ検索したのですが、どうやら更新可能なクエリにする必要があるみたいなのですが、その方法が分かりません。 宜しくお願いします。

  • Access2010で・・・

    Access初心者です。 社内でデータベースを作ることになり、分からないながらもやっていて、いざデータの入力をしようとすると問題が起きてしまいました。 クエリやフォームでデータを入力しレコードを追加して、上書き保存し画面を閉じて、また開くとクエリやフォームにレコードが追加されていないんです。 テーブルには、ちゃんと追加されています。 この原因は何でしょうか? お教えください。

  • アクセスの追加クエリで教えてください。

    非連結のフォームから、追加クエリを使ってテーブルにデータを追加したいのですが、 どうもうまくいきません。 具体的には、 履歴フォーム、というフォームで、 日付 施設名 内容 という項目があります。 追加クエリで、 [Forms]![履歴フォーム]![日付] のようにほかの項目も入力し、 その保存先は、 履歴テーブル、で、 項目は、履歴フォームと同じです。 履歴フォームにデータがまったく入っていない状態ですと、 追加クエリを実行した際、 0件のデータを追加します。となります。 自分でテーブルに直接データを何か入力すると、 次に追加クエリを実行した際、 1件のデータを追加します。となります。 続いて追加クエリ実行の際には2件、 その次は4件追加と、 テーブルに入っているデータの件数だけ、 そのときにフォームに入力されている情報が、追加されてしまいます。 どのような原因が考えられますでしょうか? お知恵を貸していただけたらと思います。 情報が不十分でしたらご指摘願います。 補足いたしますので。 それでは、よろしくお願いいたします。

  • accessでの複数条件での検索について

    現在accessで売上管理を作成しています。 T_一覧には売上日付、担当者、品名、金額、入力者、入力日付のデータが格納されています。 F_一覧は、T_一覧を基に、すべてのデータが閲覧できるフォームです。 ヘッダー部分に、売上日付、担当者、入力者、入力日付のテキストボックスを配置し、「検索」コマンドボタンを押下すると、検索したい条件に一致するデータのみが表示されるようにしたいです。 現在は担当者と入力者に検索したい値を入力し、「検索」ボタンを押下すると、条件に合ったデータのみが表示されるのですが、売上日付と入力日付に検索したい日付を入力しても、なにも検索できません。 担当者と入力者はQ_検索をT_一覧より作成し、抽出条件にLikeを使っています。 日付はどのように抽出条件にかけばよいのでしょうか?

  • アクセス2000のフォームについて

    アクセスでまたつまずいてしまいました。ちょっと教えてください。 複数のテーブルから選択クエリを作り、それを基にオートフォームでフォームを作ったのですが、フォームでデータの入力が出来ません。クエリでもデータの入力が出来ません。 「このレコードセットは更新できません」と下のほうに出ます。 フォームのプロパティのデータの更新の許可と、データ入力用のところは“はい”になっています。 私では原因がわかりません。わかりにくい質問でしょうが、どなたかご指導お願いします。

  • Accessのフォームから削除したレコードをテーブルに保存したい

    Accessを利用してフォームからデータを入力しているのですが、クエリを使わずフォーム画面から不必要なレコードをコマンドボタンで削除しています。削除したレコードをテーブルに保存したいのですが、追加クエリで条件を決めずにフォームの画面から判断したレコードだけを削除し、かつ削除したレコードを削除専用のテーブルに追加する方法を教えてください。よろしくお願いします。