Accessレポートで特定の項目を非表示にする方法

このQ&Aのポイント
  • Access2010のレポートで特定の項目を非表示にする方法について教えてください。
  • チェックボックスの状況に応じて、レポートの特定の項目を非表示にする方法を知りたいです。
  • レポートのテキストボックスやラベルを個別に非表示にする方法について教えてください。
回答を見る
  • ベストアンサー

Access レポートの一部を非表示

お世話になります。 Access2010 レポートに5つの項目(5ブロック)があり、フォーム上に設置した 1~5のチェックボックスの状況により表示/非表示させたいと思ってます。 ※1つのブロックには20~50個程度のテキストボックス及びラベルが  設置されてます。 デフォルトでは1~5のチェックボックスのチェックは入っている状態で 5ブロック全て表示させてます。 例えば、1と3、4のチェックが外された状態であれば、レポートの 1と3、4のブロックを非表示にします。 とりあえず上記の処理は出来たのですが、こんなやり方でよいの?って 感じなので、ご教示頂けたらと思います。 やったことは、各ブロックに四角形をかぶせます。 この四角形は背景スタイル[普通]、背景色[背景1]=白 です。 で、可視は[いいえ]としてます。 レポートが出力される際に、 If Me.1 = False Then Reports![レポート]![1].Visible = True Else '何もしない End If  ※Me.1はチェックボックス1 って感じで1~5の判定をしてます。 要するにチェックボックスが外れていたら、該当の四角形の可視を[はい] にしてブロックを白い四角形で隠すようにしてます。 ただ、このやり方だとレポートをデザインで開くと、レポート全体が四角形で 覆われている状態です。もし、テキストボックスの配置を変える場合 四角形をいったん別の場所にずらして戻す・・ってことをやらないといけません。 なので、背景スタイルを[透明]にして、チェックボックスが外れた場合[普通] にすればよいかと思い、 If Me.1 = False Then Reports![レポート]![1].BackStyle = 1 ← 0が透明で1が普通 Else '何もしない End If としてみましたが、うまく動きませんでした(非表示にならず)。 ちなみにこれらの処理はレポートを開いた後に行ってます。 なので、可視プロパティは開いた後でも変更可能だけど、背景スタイルは不可能 ってことなのでしょうか。 とりあえず可視/非可視の切り替えで、思ったことは出来てはいるのですが こういう場合、一般的にはテキストボックスやラベルを一つずつ可視/非可視 に切り替えたりするものなのでしょうか。それとももっと良い方法があったり するのでしょうか。 ご教示の程、宜しくお願い致します。

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

  • ベストアンサー
回答No.2

可視プロパティ以外のレイアウトに影響するプロパティは開いた後(フォーマット後)では変更できないという仕様のようです。 レポートのレイアウトや見た目の変更は、レボート側でするのが通常です。 今回は、レポートの「開く時」のイベントプロシージャを下記のようにすればいいでしょう。 Private Sub Report_Open(Cancel As Integer) If Not Forms!フォーム名![1] Then Me.[1].BackStyle = 1 End Sub

naoto0216
質問者

お礼

hatena1989さま 度々のご回答ありがとうございます。 >可視プロパティ以外のレイアウトに影響するプロパティは開いた後 >(フォーマット後)では変更できないという仕様のようです。 そうでしたか。。 可視プロパティがいけたから、他のもいけると思ってました。 なるほどですね。レポートを開く側の方でフォームのチェック ボックスを参照して判定すればよいのですね。 で、早速試してみたのですが非表示になりません。。 チェックが入っていない場合、ちゃんと該当の四角形で BackStyle=1にしているようなのですが、全て表示されて しまいます。

naoto0216
質問者

補足

失礼しました! 四角形の可視を「いいえ」のままにしてました。 「はい」にすることにより、ちゃんと該当のブロックが 非表示になることを確認しました。 大変勉強になりました。 ありがとうございました。

その他の回答 (1)

回答No.1

Reports![レポート]![1].Visible = Not Me.1 でもよいのでは?? Q、それとももっと良い方法があったりするのでしょうか? A、??? よくわからない!

naoto0216
質問者

補足

f_a_007さま いつもご回答ありがとうございます。 よくわからない!とは、質問の内容がってことでしょうか?

関連するQ&A

  • レポートのラベルなどの非表示は可能か?

    アクセス2003 SQLServer2000 WindowsXP レポートのラベルなどを条件によって非表示にしたいと思います。 フォームのコントロールは me.コントロール名.visible = false で非表示にできるのですが、 レポートのページフォーマットイベントで me.ラベル名.visible = false としても、非表示になりません。 ラベルのプロパティーには「可視」があるので可能と思っているのですが、 間違いでしょうか。 どなたかご教授お願いいたします。 プロパティーの英語表示の仕方も教えていただければ助かります

  • Accessのレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新姓 <> "" Then Me.取り消し線1.Visible = True Me.取り消し線2.Visible = True Else Me.取り消し線1.Visible = False Me.取り消し線2.Visible = False End If End Sub お力添えをお願いいたします。

  • Access2003でレポートのラベルを非表示にできない。

    勉強のためにAccess2003で葉書に宛名を印刷するアプリケーションを作成しています。 フォームは「メイン」、レポートは「名簿」というファイル名にしています。 フォームの「メイン」にチェックボックスを作成し、チェックすると差出人氏名を印刷するような仕組みにしたいのですが、デバッグすると下記のようなエラーがでてしまいます。 「レポート名'名簿'の指定が間違っています。または参照しているレポートが閉じているか存在していません。」 「メイン」のコードは ---------------------------------------------------------------- If ((i Mod 2) = 0) Then txt差出人氏名.Enabled = False txt差出人郵便番号.Enabled = False txt差出人住所.Enabled = False txt差出人マンション名.Enabled = False txt葉書氏名.Visible = False '非表示にする txt葉書郵便番号.Visible = False '非表示にする txt葉書住所.Visible = False '非表示にする txt葉書マンション名.Visible = False '非表示にする kekka = 1 Reports![名簿]![_MyName].Visible = False ⇒ここでひっかかります ---------------------------------------------------------------- たしかにレポートが閉じているのですが…どなたかご教授お願いします。

  • Access2003 レポートの表示方法に関して

    当方Access2003利用者です。 テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、レポート上では【処理】欄だけとし、 「処理2」が空白であれば「処理1」の内容を表示、 「処理2」が空白でなければ「処理2」の内容を表示といった形にしたいと考えています。 現在、 If Me.処理2.value = "" Then   Me.処理2.Visible = False Else Me.処理1.Visible = False という形で記述していますが、うまくいきません。 どのように記述すればよいのでしょうか? 宜しくお願いします。

  • (ACCESS)条件に応じて、テキストボックスを表示・非表示設定

    (ACCESS)条件に応じて、テキストボックスを表示・非表示設定 フォーム上のテキストボックスAを条件に応じて表示・非表示にさせたいです。 条件は、サブフォームのテキストボックスBに「支払」を言う文字があれば、 テキストボックスAが表示され、なければ非表示にする方法が探しています。 わからないなりに調べて、多分以下の文章になると思いますが、「?」の条件式がうまくいきません Private Sub AA_GotFocus() If  ????? Then Me!テキストボックスA.Visible = False Else Me!テキストボックスA.Visible = True End If End Sub どなたか教えてください。 宜しくお願い致します。

  • access レポートで罫線を最後まで出力する方法

    accessのbvaの本を参照してレコードがない場合でも最後まで罫線を出力する方法を試しているのですが、インクリメントがうまくいっていないのかいつまでも改ページを続けてしまいます。 どなたか解決する方法を教えてください。 Option Compare Database Option Explicit '次の3つの変数はdeclarationセクションで宣言します '現在印刷中のレコード番号を表す変数 Private pintRecord As Integer 'レコードソースの全レコード数を表す変数 Private pintRecordMAX As Integer '1ページ当たりに印刷するレコード数の定数 Private Const cintRecperPage As Integer = 15 Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) '現在印刷中のレコード番号を初期化します pintRecord = 0 'レコードソースの全レコード数を取得します pintRecordMAX = DCount("*", "T_出荷明細", "出荷No=reports![R_出荷証明書3 test]![出荷No]") '"*"にすることでクエリ内のレコード数をカウント。Null値フィールドを含むレコードも対象。 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '各テキストボックスの可視/非可視のフラグ Dim blnVisible As Boolean '現在印刷中のレコード番号をインクリメントします pintRecord = pintRecord + 1 If (pintRecord Mod cintRecperPage) > 0 Then '1ページ内の途中のレコードを印刷している場合 '改ページしないようにします Me!bpage.Visible = False '印刷するレコードの位置によって、各テキストボックスの可視/非可視の 'フラグと、次レコードへ進めるかどうかの設定を行います If pintRecord < pintRecordMAX Then blnVisible = True Me.NextRecord = True ElseIf pintRecord = pintRecordMAX Then blnVisible = True Me.NextRecord = False Else blnVisible = False Me.NextRecord = False End If Else '1ページ内の最後のレコードになったとき If pintRecord <= pintRecordMAX Then 'まだ印刷するレコードが残っているときはその行を印刷後、改ページします blnVisible = True Me!bpage.Visible = True Else '印刷するレコードがもうないときはその内容は印刷しません blnVisible = False End If End If 'フィールドと連結したテキストボックスの可視/非可視を設定します Me![品番].Visible = blnVisible Me![品名].Visible = blnVisible 'Me![寸法使用].Visible= blnvisible Me![数量].Visible = blnVisible Me![備考].Visible = blnVisible End Sub

  • アクセス。レポートを最新版状態を表示させたい

    アクセス2000を使用しています。 チェックを入れてチェックが入った品名のみレポートで表示するようにしています。 チェックが入った品名のみのレポートを常に見れるようにしたいのですがどうしたらいいでしょうか? レポートだけを開くと全ての商品がでる状態です。 1ヶ月に1.2回ほどチェックの入った品名が変わるので常に最新版を見れるようにしたいです。 レポートが表示されるまでの文です。 Private Sub コマンド_Click() If Me.チェック Then Me.品名リスト = Replace(Me.品名リスト & ",", "," & Me.品名 & ",", ",") Me.品名リスト = Left(Me.品名リスト, Len(品名リスト) - 1) Else Me.品名リスト = Me.品名リスト & "," & Me.品名 End If End Sub Private Sub 実行_Click() Dim strFilter As String If Me.品名リスト <> "" Then strFilter = "品名 In(" & Mid(Replace(Me.品名リスト, ",", "','"), 3) & "')" DoCmd.OpenReport "R_カタログ", acViewPreview, , strFilter Else MsgBox "選択されたデータはありません。" End If End Sub 初心者ですので分かりやすく教えて頂けると助かります。

  • アクセスでテキストボックスの値が空白だったら

    お世話になっております。 フォームのテキストボックスの値が0か空白だったら、レポート上に表示されるものを変えたいのですが、うまくいきません。 If [Forms]![フォーム1]![テキストボックス1].value = 0 Or [Forms]![フォーム1]![テキストボックス1].value = "" Then Me![レポート上のテキストボックス] = "無" Else [Forms]![フォーム1]![レポート上のテキストボックス1] = [Forms]![フォーム1]![テキストボックス1] & "ヶ月" End If これだと何も入っていないときに"ヶ月"と表示されてしまいます。どのように書けばよいのでしょうか? ご教授願えませんでしょうか?

  • Access 97 VBAについて

    Access VBAについて教えてください。 初心者ですが、レポートに表示されるテキストボックスの”項目名”と”内容”プロパティーに重複データ非表示にしています。そして、非表示となった部分に”〃”を表示するため別のテキストボックス、”隠しオブジェクト1”及び”隠しオブジェクト2”を配置しています。???にどんな記述が必要かわかりません。”項目名”だけであれば問題なく表示されるのですが”内容”についても同様に処理したいのです。 どうぞ宜しくお願いいたします。 Option Compare Database Option Explicit '値を保持するために外側に変数を定義します。 Dim varA As Variant --------------------------------------------------- Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)   If Me.項目名 = varA Then    Me.隠しオブジェクト1.Visible = True Else Me.隠しオブジェクト1.Visible = False End If varA = Me.項目名 ???? If Me.内容 = varA Then Me.隠しオブジェクト2.Visible = True Else Me.隠しオブジェクト2.Visible = False End If varA = Me.内容 End Sub

  • Accessでのレポート表示について

    Accessの初心者です。レポートを作成していてわからないので教えてください。 テーブルで入力したものを引っ張ってきてレポートで表示したいのですがその表示の時に括弧をつけて(****)と表示する事はできますか?  テーブルでは **** と入力して  レポートでは(****)と表示したい レポートで****の前後にテキストボックスで()を書いてもいいのですがこれでは1つ困る事があります。 それは文字数がその都度違うということです。テキストボックスでやると(**  )となったり(****)****となったりします。希望は文字数が多くても少なくても最初と最後に括弧をつけたいのです。 (*) (****) (***********) ↑こんなかんじで。 いい方法はないでしょうか?よろしくお願いします。

専門家に質問してみよう