• ベストアンサー

Accessのフォームとレポートについて

Accessでフォームに学年のクラスをリストボックスで表示させ、選択してコマンドボタンを押すとそのクラスの生徒一覧がレポートとしてプレビュー表示される仕組みをつくりたいのですがどのような手順で作成していけばよいでしょうか? (表示させるための全生徒のデータテーブルは作成済みです)

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>>=[Forms]![フォーム名]![リストボックス名] >はビルドでこれを貼り付けるだけでよろしいですか? [フォーム名]は作ってあるフォームの名前に変更して[リストボックス名]は作ったリストボックス名に変更してください。 例えばフォーム1という名前でリストボックスをリスト1という名前で作った場合は =[Forms]![フォーム1]![リストボックス1] となります。 >このクエリをレポートのプロパティのデータにあるレコードソースに >設定すれば完了です。 これはレポートを出力する元になるソースを変更するという意味です。 現在全生徒が表示されるレポートという事なので生徒のデータを入力してあるテーブルがレコードソースに設定されているはずなのでテーブルではなくリストボックスで選択したクラスをクエリで抽出したレコードを表示しようといているのでレポートの元になるレコードを抽出したクエリのレコードに変更するという意味です。 レポートをデザインビューで開いた状態でメニューの表示にあるプロパティを選択するか、開いたレポートのデザインビューの左の上にある四角を右クリックすると出てくるメニューのプロパティを選択するとプロパティが開きますのでデータというタブを選択しその項目の中にあるレコードソース(生徒のテーブル名が入っているはずです)を抽出するために作ったクエリに変更します。項目の右側の▼をクリックするとテーブル名とクエリ名の一覧がでますのでその中から作ったクエリ名を選択して設定してください。

DINO-PIE
質問者

お礼

理解不足でした。直接先生に教えてもらいます。ありがとうございました。

その他の回答 (4)

回答No.5

こんばんは、DINO-PIEさん。 O_cyan氏がレスしてくださっているのでアドバイスを。 今つまづいているのは、クラス分けをする選択クエリだと思います。 普通にウィザードで、テーブルを基に選択クエリを作成してください。 たとえば、Aというクラスを抽出する場合は、クエリの抽出条件に Like="A" としますね。 一々クエリで条件を指定する代わりに、 =[Forms]![フォーム名]![リストボックス名] とリストボックスで選んだ値を指定しているわけです。 目に見えるのはフォームですが、その裏でクエリが動く感じでしょうか。 イベントプロシージャですが、これはフォーム上にボタンを配置した時にウィザードが立ち上がりますので、指定いくだけです。 Accessは、マクロにせよ、イベントプロシージャにせよ、日本語で作れますので、Excelより動かしやすい面もあります。 とっつきにくいかも知れませんが、がんばってくださいね。

DINO-PIE
質問者

お礼

実際画面を見てもらわないと分からない点もあり、直接先生に教えてもらうことにします。ありがとうございました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>現在はクラス一覧をフォーム内のリストボックスに表示できていない状態 これはフォームにリストボックスのコントロールを配置する際にクラス名テーブルがもしあればそれを指定すればいいのですが。ない場合は配置する時に表示する値を設定します。1組~5組なら順に1~5まで、A組~D組ならA~Dまで設定し配置します。 または配置されたリストボックスのプロパティを開き値集合ソースに1;2;3;4;5とかA;B;C;Dのように入力すればリストボックスに表示できます。 >レポート作成しました。 >全生徒がレポートに表示されている状態 上記が出来ていれば抽出条件付きのクエリをつくればすぐできます。 生徒のテーブルを元に選択クエリを作りクラスの抽出条件にリストボックスの選択された値を代入します。 =[Forms]![フォーム名]![リストボックス名] (抽出条件の欄で右クリックしビルドを選択すると式ビルだが開きますのでフォーム→フォーム名を順に選択し表示されるコントロール名で作ったリストボックスを指定すれば出来ます) このクエリをレポートのプロパティのデータにあるレコードソースに設定すれば完了です。 あとはリストボックス内で選択しボタンをクリックすれば抽出されたレコードのレポートが表示されます。

DINO-PIE
質問者

補足

申し訳ありません。 >=[Forms]![フォーム名]![リストボックス名] はビルドでこれを貼り付けるだけでよろしいですか? >このクエリをレポートのプロパティのデータにあるレコードソースに >設定すれば完了です。 ここの意味も詳しくお願いします。

回答No.2

こんばんは、DINO-PIEさん。 これはクラスを選択する選択クエリと、ボタンを押したらレポートを開くイベントプロシージャもしくはマクロが必要ですね。 テーブルのフィールドが、ID(主キー)、クラス、名前となっているとして話を進めます。 フォームにリストボックスがあり、そのコントロール名は"リストボックス1"とします。 クラスによって、抽出するクエリをウィザードに従って作成します。 全てのフィールドを選択→種類を選択クエリとします。 抽出条件はクラスの下に [Forms]![フォーム1]![リストボックス1] とします。 これで、クラス分けされます。 レポートを作成します。 これは、先ほどの選択クエリを基に作成します。 フォームに戻り、ボタンを作成しイベントプロシージャで先ほどのクエリを開くように設定。 これで、フォーム上で ・クラスをリストボックスで選択し ・クラスの生徒一覧となるクエリが開き ・ボタンを押すとクエリを基にしたレポートが開く という手順になります。

DINO-PIE
質問者

補足

>全てのフィールドを選択→種類を選択クエリとします。 >抽出条件はクラスの下に >[Forms]![フォーム1]![リストボックス1] >とします。 >これで、クラス分けされます。 ↑ 申し訳ありません。ここの意味がよくわからないのですが…。あとイベントプロシージャはどこで操作するのかわからないので教えていただけますか?

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 まずレポートを作りましょう。ここでは、全生徒が表示されるようにします。一応、学年、クラス順にも並び替えておくと良いでしょう。  次にフォームを作ります。リストボックスを2つ置いて、学年とクラスにします。学年によってクラス数が変わる場合は後で考えます。  それではボタン置いて、先ほど作成した全生徒のレポートを出すようにします。ボタンを置くと、ウィザードが開始されるのでレポートの表示を選択しましょう。とりあえずは途中で全件表示を選んでください。  それが終わったら、いよいよ抽出条件の設定です。ボタンを右クリック→イベントのビルドで、プログラムを書く画面が開きます。ここで、stLinkCriteriaという変数があれば、それにSQL文の抽出条件のみを記述しましょう。

DINO-PIE
質問者

補足

 申し訳ありません。説明不足でした。レポート作成しました。学年は今回考えていません。  リストボックス内のクラスを選択してコマンドボタンを押すと該当クラスの生徒が表示するようにさせたいのですが、現在はクラス一覧をフォーム内のリストボックスに表示できていない状態です。  コマンドボタンをクリックしてみると全生徒がレポートに表示されている状態にあります。

関連するQ&A

  • ACCESSで表示されているフォームだけをレポートに出したい

    アクセスで、入力したフォーム内容をすぐにレポートで印刷できるよう、コマンドボタン作成ウィザードで、レポートの操作→レポートのプレビューを行ったのですが、IDが1のものが表示されてしまいます。。 これを、表示されているフォームIDのものをプレビューさせることはできますでしょうか? 色々調べてみたのですが、分からなかったので。。 宜しくお願いします!

  • accessのレポートで…

    レポート(テーブル1から作成)にあるフィールド1には「1・2・3…」という数字が入っています。 この1・2・3はテーブル2(ID・名前)とリンクしています。 フォーム上ではコンボボックスにして、テーブル2の名前も表示するようになっています。 (テーブルに値としては入っていません) これでレポートを作成した場合、テーブル2の名前を表示させたいのですが、テキストボックスで Iif([フィールド1] = "1","****",Iif(… というようにしてしまうと、せっかくリンクにしたのにデータが固定になってしまうのを避けたいんです。 フォームだとコンボボックスの更新後処理とレコードの移動にコードをかけば最新の情報を表示することができたんですが、レポートでもこのようなことはできるんでしょうか? (コードをかいて処理したいです) Access2000です。 よろしくお願いします。

  • ACCESSでフォーム入力→レポート出力したい

    ACCESSでフォーム入力→レポート出力したい OS:XP,ACCESS2000 フォームのテキストボックスに入力した文字をレポートのテキストボックスに表示したい。 フォーム: ファイル名は「フォーム1」で、その中に作ったテキストボックス名は「入力データ」 コマンドボタン名は「レポート出力」 レポート: ファイル名は「レポート1」で、その中に作ったテキストボックス名は「出力データ」 フォーム1とレポート1を立ち上げてフォームのテキストボックスにデータを入力した後、 コマンドボタンを押してもレポート1のテキストボックスに入力したデータが表示されません。 レポート1を選択した後にデザインボタンを押し、その後にもう一度立ち上げると、 なぜかデータが書き込まれています。 コマンドボタンを押したのと同時にレポート1にデータが表示されるようにするには どうすれば良いですか? プログラムは以下の様になっております。 (1)クラスオブジェクト下 Private Sub コマンドボタン_Click() Call レポート書き出し() End Sub (2)標準モジュール下 Public Function レポート書き出し() Dim F As Form Dim R As Report Set F = Forms![フォーム1] Set R = Reports![レポート1] R![出力データ] = F![入力データ] End Function

  • ACCESSフォームに編集用のテーブルを表示したい

    Accessフォームにあるテーブルより(SQLを使用して)抽出した結果を表示するリストボックスがあります。 それを『プレビュー用』として、 同じフォーム内に『編集用』のリストボックスのようなものを作成して 左右比較できる形で内容の編集ができるようにしたいです。 ※変更前と変更後のようなイメージです。 現在、プレビュー用のリストボックスは完成しているのですが その隣に同じ内容を表示した編集用テーブルのようなものを 作成しようとサブフォームを作成しましたが サブフォームのプロパティにはSQLをセットできるRECORDSETのようなものがみつかりません。 リストボックスにRECORDSETできるようにしてしまうと 今度は直接編集ができないです。 低レベルな質問で申し訳ありませんが よい方法がありましたらご教授願います。

  • Access2000でモーダルフォームの上にレポートを表示したい!!

    フォーム[棚卸集計](←モーダルフォーム)のコマンドボタンで、レポートプレビューをすると、レポートがフォーム[棚卸集計]の下に出てきてしまいます。 普通のフォームをプロパティーでモーダルフォームに変えたように レポートも変えれないのでしょうか? 「レポートを最大化し、一番上に表示したいのです」 どなたか解る方、お願いです教えて下さい。もう、お手上げです。。。 初心者なので・・出来れば噛み砕いて書いてくださるとありがたいのですが・・・ よろしくお願いします。

  • アクセス2000のレポート作成で

    アクセス2000のレポート作成時にデザインビューを利用してレポートを作成しようとしています。 ここでフィールドリストを利用してテーブルのフィールド名をドラッグ&ドロップし、デザインビュー上に配置したいのですが、フィールドリストを画面に参照できません。 どのような設定をすればフィールドリストが出せるのでしょうか。 また、他に方法がないかと思い、デザインビュー上にテキストボックスを配置し、 プロパティ> データ> コントロールソース>式ビルダの作業画面からテーブルのフィールド名を配置していますが、プレビュー表示すると「#Name?」と表示されてしまいます。 よろしくお願いします。

  • ACCESS97 レポート。フォームが作れません

    ACCESS97で作成されたファイルのレポート。フォームが編集、新規作成ができません。 テーブル、クエリ、マクロはできます。 データベースウィンドゥのフォーム、レポートから 新規作成、編集ボタンが押せない状態になってます。 権限やセキュリティで引っかかっているのかと思って、【ツール】下の機能を見たのですが。 関係なさそうな気がします・・・・。 仕方ないので、必要なテーブルやクエリを別ファイルにインポートして、そちらで レポートを作成しています。 元データのファイルに組み込みたいのですが、やり方を教えてください・・・。

  • Accessレポートでコンボボックスが動かない

    Access2010のレポートでコンボボックスを使いたいのですが、コンボボックスが正しく表示されず困っています。 表示されないというのは、コンボボックスのリストを選択する逆三角形が表示されず、またリストも全く表示されません。つまりテキストボックスのように空のの四角い箱が表示されてしまいます。 表示したいリストはあるテーブルから引っ張っているのですが、全く同じことをリストボックスでやろうとするとすべての項目がうまく表示できることは確認しました。 またフォームの方ではコンボボックスをから項目が選択できることも確認できています。 レポートではコンボボックスが使えないような仕様になっているのでしょうか? お分かりになる方教えていただけますでしょうか?

  • ACCESS2000のレポート

    Windows2000&ACCESS2000のレポートで変な現象が出ています。 テーブル:日付と住所とシメイと氏名。日付は日付型、それ以外はすべてテキスト型。 クエリー:上記のフィールドをそのままクエリーに。 表形式のレポートを作成を作成。日付によって抽出条件を変えて例えば、 何月何日の人の一覧表、のように出力しています。 →シメイ のテキストボックスだけ、 プレビューではすべて表示されているのですが、実際に印刷してみると 表示されていないことがあります。 この現象は、レポート単位です。 PCを変えて(ドライバーを変えて)みても同じ現象が起こります。 ご存知の方、おられましたら、よろしくお願いします。

  • ACCESS 指定レコードのレポート印刷

    OKWaveでも他の方が質問していますが、同様な対応をしても、どうも正常動作しません。 内容:1.フォーム作成完了 → 2.レポート作成完了 → 3.現在フォームに表示されているレコードを(2)で作成したレポート形式で印刷(プレビュー)をしたい。 レポート名:看板 フォーム名:管理    フォーム画面上には ID を表示させています。 テーブル名:管理TBL 管理TBLには ID というフィールドはあります。 実施内容:下記内容を印刷コマンドボタンのイベントプロシジャーに記述。 Private Sub report_Click() Dim stDocName As String   DoCmd.OpenReport "看板", acViewPreview, , "[ID]=" & [Forms]![管理]![ID] End Sub 例えば、レコード3のフォーム上で上記内容のコマンドボタンをクリックすると、IDのパラメータのポップアップが表示され3を入力後、看板のレポートプレビューが表示されますが、固定データのみ表示されているレポートで当該レコードの内容が反映されたレポートが表示されません。 レコード1のフォーム上で実施したら、IDパラメータポップに1を入れると全レコードのレポートがプレビューされます。 どうしたら、カレントレコードの内容のみを反映したレポートをプレビューさせることができるのでしょうか、ご教授下さい。また IDパラメータポップアップも表示させたくありません。

専門家に質問してみよう