テーブル・クエリ・フォーム、アクセス初心者におすすめは?

このQ&Aのポイント
  • テーブル・クエリ・フォームのそれぞれの使い方を説明し、アクセス初心者におすすめの開き方を紹介します。
  • ピボットテーブルビューとデータシートビューの比較、それぞれのメリットとどのビューで開くべきかについて解説します。
  • テーブルやクエリでは条件付き書式の設定はできませんが、フォームなら設定できる利点があります。全てのビューで開く場合、テーブル・クエリで開くメリットについても考えてみましょう。
回答を見る
  • ベストアンサー

テーブル・クエリ・フォーム どれがいい?

アクセス初心者の為、よくわからないので教えてください。 テーブル1があり そこには ID(主キー/オートナンバー型) フィールド1(テキスト型)があります。 そのテーブルを基にクエリ1作成してます。 [SELECT テーブル1.* FROM テーブル1;] です。 また、テーブル1をレコードソースとしたフォーム1も作成しています。 そして図のようにメインメニューフォームを作成し それぞれのコマンドボタンを設置しました。 モジュールには --------------------------------------------------------- Option Compare Database Option Explicit Private Sub コマンド0_Click() DoCmd.OpenTable "テーブル1", acViewPivotTable End Sub Private Sub コマンド1_Click() DoCmd.OpenQuery "クエリ1", acViewPivotTable End Sub Private Sub コマンド2_Click() DoCmd.OpenForm "フォーム1", acFormPivotTable End Sub --------------------------------------------------------- と書いたので どのボタンを押してもピボットテーブルを開けます。 しかしどれか一つにしたいのですが 今後運用するにおいてどれで開けばいいのでしょうか? ピボットテーブルビューで開くならどれも同じでしょうか? 今回はピボットテーブルビューで表示していますが データシートビューでも表示させたい場合があれば 「フォームなら条件付き書式が設定できるからフォームが良いかなー」 と思っています。 確かテーブルやクエリでは条件付き書式はできなかったような・・・ 全てのビューで開くにおいて テーブル・クエリで開くメリットがあれば教えてください。 ご回答よろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

私見なのでご参考まで。 PivotTableは一時的に使用するためのものと考えています。 クロス集計クエリを作ってみてください。 ウィザードもありますので、とっつきやすいかと思います。 クロス集計クエリの場合に列数が変化する場合フォームで設計するのがネックですが hatena さんが良いことを教えてくださってます。 http://hatenachips.blog34.fc2.com/blog-entry-142.html こちらの方向の方が後々柔軟に対応できるかと。

gir31234
質問者

お礼

クロス集計クエリを使ったことがないので良さがわかりませんでした。 ぜひ使ってみたいと思います! ありがとうございました。

関連するQ&A

  • クエリをピボットテーブルで開きたい

    フォームのコマンドボタンをクリックして「作成者別」というクエリを開いているのですが ピボットテーブルで開きたいのですがデータシートで開かれてしまいます。 クエリのデザインのプロパティ→規定のビューはピボットテーブルにしてあり、クエリをダブルクリックして開くとピボットテーブルで開かれるけど フォームのコマンドボタンからはデータシートです。 vbaコードは DoCmd.OpenQuery ("作成者別") です。 以上よろしくお願いします。

  • ピボットテーブルビューで開かない

    アクセス2007です。 フォームで作ったピボットテーブルが、ピボットテーブルビューで開かないのです。 Private Sub コマンド_Click() DoCmd.OpenForm "Fピボットテーブル", acViewPivotTable End Sub としてるのですが、データシートビューで開かれます。 でも、ナビゲーションウインドウのフォームのカテゴリで、 直接 "Fピボットテーブル"をダブルクリックして開くと、 ちゃんとピボットテーブルビューで開きます。 デザインビューで確認すると、既定のビューは、ピボットテーブルになっています。 どうしてでしょうか?ご回答よろしくお願いします。

  • サブフォームのビューを切り替えたい

    親フォーム(フォーム1)にサブフォームとして、 テーブルをソースとするサブフォーム(テーブル1のサブフォーム)を配置しました。 親フォームからサブフォームのビューを変更したいのですが どうすればいいか教えてください。 親フォームのコマンドボタンにはそれぞれ Private Sub 単票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 1 '帳票フォーム End Sub Private Sub 帳票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 0 '単票フォーム End Sub としたのですが、 実行すると 実行時エラー 2136 "このプロパティを設定するには、フォームまたはレポートをデザインビューで開きます"。 となってしまいます。 Private Sub 帳票フォームへ切り替え_Click() DoCmd.SelectObject acForm, "テーブル1のサブフォーム" DoCmd.RunCommand acCmdFormView End Sub にしたところ、 実行時エラー 2489 “オブジェクト テーブル1が開いていません、” になります。 サブフォームに埋め込んでいて親フォームを開いていても 開いてない事になるのですね。 フォームビューの時に、切り替える事は不可能なのでしょうか? 帳票ビュー表示用フォーム、 単票ビュー表示用フォーム を作るしかないのでしょうか?

  • 「クエリが閉じてるなら」「クエリが開いてるなら」

    Sub test() If クエリが閉じてるなら Then  DoCmd.OpenQuery "クエリ1" ElseIf クエリが開いてるなら Then  DoCmd.Close acQuery, "クエリ1" End If End Sub という事をやりたいのですが、 「クエリが閉じてるなら」 「クエリが開いてるなら」 のコードがわかりません。 よろしくお願い致します。

  • アクセスフォームのサイズの調整について

    一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには? フォーム1とフォーム2があります。画像をご覧ください。 フォーム1は Private Sub Form_Load() DoCmd.Maximize End Sub で、 フォーム2は Private Sub Form_Load() DoCmd.Restore End Sub としてます。 フォーム1にコマンドボタンを設置して、 Private Sub フォーム2を開く_Click() DoCmd.OpenForm "フォーム2" End Sub として、フォーム2を開くのですが、 フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。 行いたいことは、 フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • DAOでテーブルの内容を検索したいのですが…

    DAOでテーブルの内容を検索したいのですが… アクセス初心者です。 フォームで取得した値をテーブルで検索して命令するために,次のようなことをしてみましたが,FindFirstのところでエラーがでます。 どうしたらよいのかご指導ください。 コマンドボタンのイベントプロシージャで Private Sub テストテーブル作成_Click() Dim gakki As Integer Dim test As Integer Me.学期 = gakki Me.テスト = test Call testテーブル作成 End Sub として,標準モジュールに Sub testテーブル作成() Dim myDB As DAO.Database Dim myRS As DAO.Recordset Set myDB = CurrentDb Set myRS = myDB.OpenRecordset("T_生徒テスト") myRS.FindFirst "学期ID=" & "" & "gakki" & "" & "AND テストID =" & "" & "test" & "" If myRS.NoMatch = False Then DoCmd.OpenQuery "Q_TSテストA" DoCmd.OpenForm "F_テスト" DoCmd.Close Else DoCmd.OpenQuery "Q_TSテスト" DoCmd.OpenQuery "Q_テスト" DoCmd.Close DoCmd.OpenForm "F_テスト" End If myRS.Close: Set myRS = Nothing myDB.Close: Set myDB = Nothing End Sub としました。よろしくお願いします。

  • 標準モジュールだとエラーになる理由を教えてください

    アクセスのフォームの上にコマンドボタンを一つ設置して、 クリックイベントで Private Sub コマンド0_Click() DoCmd.Close acForm, Me.Name End Sub とすれば、自身のフォームが閉じます。 しかし、 Private Sub コマンド0_Click() Call test End Sub と、 標準モジュール Option Compare Database Option Explicit Sub test() DoCmd.Close acForm, Form_フォーム1 End Sub にすると、 実行時エラー2498 指定した式は、 いずれか の引数とデータ型が対応していません。 になります。 行ってる意味は同じだと思うのですが、 なぜエラーになるのか教えていただけますか?ご教授よろしくお願いします。

  • テーブルをコンボボックスで選びたい

    いつも、お世話になっています。お願いします。 1つのフォームで複数のテーブルにデータ入力をしたいのです。 テーブルに、平成14年1月、平成14年2月、・・・、と 毎月分あります。 現在は、コマンドボタンを作成して、以下のようにしてます。 Private Sub コマンド1_Click() Me.RecordSource = "平成14年1月" End Sub Private Sub コマンド2_Click() Me.RecordSource = "平成14年2月" End Sub これですと、テーブルの数のコマンドボックスが必要ですので、 ちょっと、煩雑に見えています。 コンボボックスを作って、 テーブルを選べるようにしたいのですが、 式ビルダとか、見ているのですが、出来ません。 お教えください。お願いします。

  • AccessVBAにおけるOpenArgsの使用について

    AccessVBAを最近はじめた初心者です。 ~~~フォーム1~~~ Private Sub コマンド0_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド0" End Sub Private Sub コマンド1_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド1" End Sub ~~~フォーム2~~~ Private Sub Form_Load() Dim strFormName As String strFormName = Forms.フォーム1.OpenArgs DoCmd.PrintOut strFormName End Sub 上のプログラムのようにフォーム1でクリックしたボタンによってフォーム2を読み込んだ時の動作を変えるプログラムを作成しようとしています。 しかし、実際に起動させると、『strFormName = Forms.フォーム1.OpenArgs』の辺りで 「Null の使い方が不正です。」 というエラーメッセージが表示されます。 Accessのヘルプを参照に組んでみたのですが、どの箇所が間違っているのでしょうか? 回答、よろしくお願いします。

  • コマンドボタンを押してフィルタを掛けたい(vba)

    すいません、、、教えてください。 テーブル1を作成し(図:左)、そのテーブルを元にフォームを作成したました。(図:右) フォーム上のコマンドボタンを押したら、 「いぬ」だけをフィルタ掛けるにはどういうコードを書けばいいですか? http://www.tsware.jp/study/vol4/docmd_5.htmを参考に Private Sub コマンド_Click() Forms!テーブル1.Filter = "名前 = 'いぬ'" DoCmd.RunCommand acCmdApplyFilterSort End Sub としてみたのですが 実行時エラー2046となって止まってしまいます。 続きを教えてくださいませ、、、 よろしくお願いします。

専門家に質問してみよう