Accessチェックボックス項目のデータをレポートに表示する方法

このQ&Aのポイント
  • Accessでデータにチェックボックス項目を使用している場合、レポートで判定があった項目のみ抽出して表示する方法を解説します。
  • 現在の状況では、テキストボックスのコントロールソースにチェックボックス名を入力しても、判定結果の"-1"が表示されます。この問題を解決し、フィールド名を表示する方法を紹介します。
  • Accessでチェックボックス項目のデータをレポートに表示する方法を学ぶために、マクロビルダーで作成している範囲を超えて進めるために、VBAの学習が必要です。VBAの基本的な知識を習得することで、フィールド名を表示させることができます。
回答を見る
  • ベストアンサー

Access チェックボックス項目について

最近Accessを始めました。 YouTubeやブログなどを見ながらコツコツやっておりますが、下記のような事ができるかどうかわかりません。 現在はマクロビルダーでできる範囲で作成しております。 vbaは難しそうで少しずつ勉強中です。 やりたいこと データにチェックボックス項目が数か所あります。 このデータをレポートにしたときに、チェックボックスに判定があった項目のみ抽出させ、そのフィールド名をレポートのテキストボックスに表示させたいです。 現在、テキストボックスのコントロールソース部にチェックボックス名を打ち込んでも、判定結果の"-1"が表示されます。これをフィールド名にしたいです。 説明がわかりずらいかもしれませんが宜しくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

ようやく質問の内容がつまびらかに なってきたようなので。 >7か所のチェック項目があります。 >このレポートにて「備考」項目に「ACD」 ということで、私の回答はあえてVBAを使わない方法で。 私のNo2の回答の2番目のところで、判定というところを備考 とすれば、 備考: IIf([赤]=True,"赤","") & IIf([青]=True,"青", "") & IIf([緑]=True,"緑","") というように置き換えてください。つまりここでは3つの チェックのフィールドについてかいていますが、7つの場合 は上記の書き方に準じて文字列を足してください。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1579/2414)
回答No.3

> 上のようなことがマクロビルダーでできるとありがたいのですが…。 マクロからVBAを実行する方法になりますが テーブルに備考というフィールドがあるとして VBAの標準モジュールに以下のコードを作成し レポートの開く時のマクロで プロシージャの実行 プロシージャ名 「Test()」 として試してみてください。 対象はQ_TESTという選択クエリにしていますので実際のものに変更してください。 ":"を備考欄に記載するフィールド名の区切りにしていますので適当に変更してください。 テーブルの備考も変更されます。 Function Test() Dim db As Database Dim rs As Recordset Dim i As Long Dim mStr As String Set db = CurrentDb() Set rs = db.OpenRecordset("Q_TEST") rs.MoveFirst Do Until rs.EOF = True rs.Edit rs!備考 = Null mStr = "" For i = 0 To rs.Fields.Count - 1 If rs.Fields(i).Type = dbBoolean And rs.Fields(i).Value = True Then mStr = mStr & rs.Fields(i).Name & ":" End If Next rs!備考 = mStr rs.Update rs.MoveNext Loop Set rs = Nothing Set db = Nothing End Function もしくは、開く時のコードビルダーで以下ができますので上記の内容をそこに入れてください。 Private Sub Report_Open(Cancel As Integer) ここに Dim db As Database から Set db = Nothing までを入れる End Sub

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

質問からの情報量が少ないので推測で回答 してみます。回答は二つの場合について 回答してみました。 例えば以下のようなテーブルだとします。 ID 名称 赤 青 緑 1 ミドリ号 No No Yes 2 アカダマ号 Yes No No 3 ブルーライン号 No Yes No テーブルの構造は ID  オートナンバー 名称 テキスト型 赤  Yes/No型 青  Yes/No型 緑  Yes/No型 です。適当に作っていますが。 質問ではチェックが入っている場合はそのフィールドの フィールド名を表示したいということなので、この テーブルをもとにクエリを作成します。 クエリは以下のような構造ですが、 フィールド  ID       名称   F3  F4  F5 テーブル   テーブル1  テーブル1 表示     ☑       ☑    ☑  ☑  ☑ ここでF3、F4、F5は内容が長いので それぞれ赤、青、緑なのですが、F3、F4、F5にはそれぞれ 以下で置き換えます。内容が長いのではみ出すので このような手順にしています。 F3 赤色: IIf([赤]=True,"赤","") F4  青色: IIf([青]=True,"青","") F5  緑色: IIf([緑]=True,"緑","") つまり、F3というフィールド名を 赤色: IIf([赤]=True,"赤","") という文字列に置き換えます。以下F4、F5も同様にそれぞれの 文字列で置き換えます。 ここで赤色を赤にしたいところですが、この場合は同じにすると 循環参照というエラーが生じAccessの規則に反します。そのために あえて赤というフィールド名を赤色というフィールド名に しています。この辺りはまた勉強してみてください。 したがって(変な言い回しですが)F3、F4、F5は直接テーブルの 値を表示していないということで参照するテーブル名は表示しません。 作成したクエリを表示すると、 ID   名称       赤色    青色   緑色 1   ミドリ号                  緑 2   アカダマ号     赤 3   ブルーライン号         青 というようになり、このクエリをもとにレポートを作成すると 同様のデータを表示するレポートができます。 もう一つは、チェックのフィールドを一つにする場合、 つまり赤色、青色、緑色のフィールドをそれぞれに表示する のではなく、例えば判定というフィールドに表示する、 ID   名称        判定 1   ミドリ号       緑 2   アカダマ号      赤 3   ブルーライン号    青 のようにしたい場合は、クエリの構造を以下のように します。 フィールド    ID    名称       F3 テーブル    テーブル1  テーブル1 表示       ☑     ☑       ☑ 同様にしてF3を以下の文字列で置き換えます。 判定: IIf([赤]=True,"赤",IIf([青]=True,"青",IIf([緑]=True,"緑",""))) このIIfを使う方法は対象となるチェックボックスの数によって 二つの方法とも条件を増やしていかなくてはなりません。 そのあたりは私の推測でいいのならばどちらの方法を とるのか、あるいは具体的にチェックボックスのフィールド の数はいくつあるのかわかれば特に二番目の方法は かっこの数を間違えないようにする必要があるので 示してもらえばと思いますが。

hiroshi-okwave
質問者

補足

回答ありがとうございます。 また、わかりづらい質問に親身に答えて下さり感謝致します。 回答者#1様に例を挙げさせていただきました。 #2様の内容を拝見させていただきまして、 私のやりたい事が少し近いような気がします。 これをヒントに少しいじってみたいと思います。 またわからない事がありましたら宜しくお願い致します。

  • kkkkkm
  • ベストアンサー率65% (1579/2414)
回答No.1

フィールドの値ではなくフィールド名を取得してレポートするのでしょうか。 フィールドの値ならクエリでチェックボックスの抽出条件をTrueにすればチェックの入ったレコードだけ抽出できますが…。 > データにチェックボックス項目が数か所あります。 これだけでは、データがどのようになっているのかがよく分かりませんから、他の方の質問を参考にしてデータの例を出した方がいいと思いますよ。

hiroshi-okwave
質問者

補足

回答ありがとうございます。 また、わかりづらい質問に親身に答えて下さり感謝致します。 補足致します。 フィールド値ではなく、フィールド名を拾いたいです。 また、7か所のチェック項目があります。 その7か所のうち複数個所チェックされたときに、 その判定結果を例えば「備考」フィールドがあったとして、 そこに落とし込みたいです。 例:A~Gのチェック項目があったとして テーブルでACDと3項目チェックされたとします。 このレポートにて「備考」項目に「ACD」と表示させたいです。 上のようなことがマクロビルダーでできるとありがたいのですが…。

関連するQ&A

  • ACCESSにおけるチェックボックスの利用について

    【至急お願いします】 あるデータベースを基にクエリを作成し、そのデータをレポートに出力する作業について質問です。 クエリで抽出したデータをレポートに出力した際に、不要なデータについては排除したいと考えております。 そこでチェックボックスを用いて、「チェックのあるデータ(列)についてのみレポートに表示」させたいと思っておりますが、なかなかうまくいきません。 現在は、レポート内にチェックボックスを配置しておりますが、このやり方ではうまくいかないのでしょうか?もしできるのであれば、マクロ等ご教示願います。 レポート内におけるチェックボックスでの抽出が不可能である場合は、別の方法を教えていただきたいと思います。 最終的な目標は、必要な情報だけ表示した後に印刷することです。 よろしくお願いします。

  • Accessチェックボックス 一度で複数のチェックを入力

    会社でAccess2000を使用しています。 ExcelからAccessテーブルへインポートしたデータで、 チェックボックスがあるフィールドがあります。(フィールド名は「請求済」です) レコードが数千件あり、1ヶ月ごとに何百単位で請求の有無を確認をしなければなりません。 複数のチェックボックスへ、一度でチェックを入力する方法はありますか? ちなみにAccessは初心者で、マクロやVBAはやったことがありません。

  • チェックボックス以外の文字を抽出

    入力用フォームAに複数のチェックボックスとひとつのテキストボックスを配置し、 チェックの入っている項目とテキストボックスに入力した文字を 表示用フォームBの「フィールド1」にまとめて表示させています。 以下のようなイメージです。 <入力用フォームA> ■A □B ■C 【あいうえお】 <表示用フォームB> フィールド1【A C あいうえお】 表示用フォームBのフィールド1から、 テキストボックスで入力させた文字だけ(”あいうえお”) 抽出するにはどうしたらいいでしょうか? 入力用フォームAのチェックボックスとテキストボックスを それぞれ別のフィールドにして、 表示用フォームBで&でつなげて表示させるような構造だったら簡単なのでしょうが チェックボックスもテキストボックスも ひとつのフィールドにまとめてしまっているので どうしたらいいか分かりません。 ご教授よろしくお願いいたします!

  • アクセス チェックボックスとクエリ

    いつもお世話になっております。アクセス初心者です。 あるフォームのチェックボックスのオンオフとコンボボックス、 クエリの選択条件が思うように連携できなくて困っています。 やりたいことは、、、フォームのチェックボックスが、 ON(True)ならば、 フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、 OFF(False)ならば、 フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、 としたいのですが…。 IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。 クエリの実行は、コマンドボタンで別のフォームを開いています。 (IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。  IIf(…,…,IIf(…,…,…)) という感じで書きました。) Switchの時のクエリの抽出条件の式は、次のような感じです。 Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*") ( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。) このようなことはできないのでしょうか? 別の方法が必要でしょうか? すみませんが、教えてください。宜しくお願い致します。

  • チェックボックスの生成

    初めまして。 外部テキストから値を読み込んで、チェックボックスを生成し、データの受け取り、データベースの書き込みまでを行いたいのですが、良い方法を教えて頂けないでしょうか? 外部テキストの形式は DBテーブルのフィールド名|HTML表示用の文字列 という状態で、中身は A|あああ B|いいい C|- D|えええ という感じになっています。(- は今のところ利用しない項目) 外部テキストからチェックボックスの生成を行う理由は、利用するデータの増減に対する修正がテキストファイルのみで完了するためです。 自力でも試してみたのですが、チェックボックスのデータを受け取れなかったり、受け取れてもデータベースの更新がうまくいかなかったりで頓挫してしまったので、チェックボックス自体の生成からデータベースへのデータ渡しまでが上手く行く方法を教えて頂けると助かります。 お手数ですが、ご教授下さい。宜しくお願い致します。

  • クエリでのチェックボックスについて

    T_CFN_NEWというテーブルで「拒」というフィールドに以下の項目があります。 F_RejectReasonでチェックボックスをONになったデータのみをQ_CFN_NEWに抽出できるようにしたいのですが、フームで「拒」が空白をONにしていても、クエリでは表示されてこないです。 空白もチェックボックスで制御したいのですが、どうしたらいいでしょうか?

  • Access チェックボックスでチェックしたデータのみフォームで表示

    いつもお世話になっております。 またも躓いてしまいました。宜しくお願い致します。 フォーム上でチェックボックスにチェックが入ったデータを、違うフォームで詳細表示させる処理が出来ずにいます。 手順としては (1)検索用フォーム「処理検索」で、「処理番号」または「件名」テキストボックスに条件を入力し、検索実行ボタンで検索開始 (2)「詳細表示」フォームに、(1)で検索した結果が、フォームビューで表示。その際、フォームの形式は、フォームヘッダーに「詳細表示」ボタンと、各データの項目名が置いてあり、詳細にチェックボックス・処理番号・年月日・件名のテキストボックスが置いてあります。 ☆簡易図☆ [詳細表示]←ボタン  詳細表示      処理番号  年月日 件名 -------------------------- [チェックボックス]|[処理番号]|[年月日]|[件名] (3)データを詳細表示したいものにチェックボックスでチェックマークを入れ(運用上のルールで1つ以上は選ばない事になっています)、詳細表示ボタンをクリックすると、チェックを入れたデータのみ、さらに詳しい「処理票 詳細情報」フォームが立ち上がる 「詳細表示」フォームから「処理票 詳細情報」フォームへ展開するにあたり、「Q詳細表示検索」クエリを作成し、チェックボックスの判定をするようにすれば良いのかと思ったので、下記のように作ってみたのですが、うまく展開できませんでした。 今回利用したもの ☆テーブル☆ ・メインデータ(詳細なデータが入っている) ・詳細表示(チェックボックス及び、処理番号・年月日・件名が入っている。メインデータの処理番号とリレーション) ☆クエリ☆ ・Q詳細表示検索 (詳細表示テーブルから「チェックボックス」と、他の項目はメインデータテーブルから必要分入っています。) ☆フォーム☆ ・F処理検索(処理番号・件名をあいまい検索で検索できるようにしてある) ・詳細表示(F処理検索の結果が、チェックボックス・処理番号・発生日・件名の項目でデータを一覧表示する) ・処理票 詳細情報(もっと詳しい情報を表示・項目数だと30項目程表示しています) ☆マクロ☆ ・詳細表示 フォーム名:処理票 詳細情報 ビュー:フォームビュー フィルタ名:Q 詳細表示検索 以上、宜しくお願い致します。

  • access チェックボックスを複数選択

    超初心者です。よろしくお願いします。VBAの知識もほとんどありません。 個人情報の趣味の選択をチェックする項目を作る前提で話します。 顧客テーブルの中に(氏名、住所、電話、趣味選択)があるとして、趣味選択と以下のT-趣味とはリレーションシップでつながれているとします。 テーブル:T-趣味 趣味ID  趣味     データ型:テキスト S-1    音楽 S-2    スポーツ S-3    読書 S-4    アウトドア S-5    旅行 としたとき、テーブルからテキストデータ(音楽、スポーツ、…)を抽出してチェックボックスを作ることは可能でしょうか。 またそれを複数選択して顧客テーブルの趣味選択のフィールドにデータ(ex:読書、旅行)を入力することは可能でしょうか。 よろしくお願いします。

  • Accessのチェックボックスでチェックしたデータのみ更新するには。

     Access2000で顧客管理のDBを作っています。年齢などの条件をフォームから入力し、抽出結果をレポートで出力しています。この度、顧客情報のテーブルに「最終DM発送日」というフィールドを追加したいと考えています。  顧客の抽出は主に、DM発送の顧客の絞込みのため行っています。抽出した顧客一覧をフォームで表示し、顧客毎にチェックボックスを設け、実際DMを送ったかどうかのチェックを行いたいのです。が、チェックボックスで得た結果の使い方がよくわかりません。どのように、テーブルに反映したらよいのでしょうか?  どうかよろしくお願い致します。

  • VBA チェックボックスをチェックした項目のみ抽出

    1.シート1のA列にフォームのチェックボックスを配置 2.B列に名前を並べる 3.チェックボックスでクリックし、チェックマークが出る 4.マクロでシート2のA列から抽出された名前を並べる 以上のことをしたいと思い、検索しましたところ、似たようなものが見つかりました。 https://okwave.jp/qa/q5065347.html ただ、このVBAは抽出先がG列です。抽出先はシート2のA列にしたいのです。 .Cells(i, "G").Value = cb.TopLeftCell.Offset(, 1).Value これをどうしたら良いでしょうか? 宜しくお願いします。

専門家に質問してみよう