• ベストアンサー

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

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

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> テーブル上では、「処理1」「処理2」という異なったフィールドを作成しておりますが、 > レポート上では【処理】欄だけとし、 レポートの『レコードソース』を、現在のテーブルから、そのテーブルを基にしたクエリに 変更されてはいかがでしょうか。 つまり、クエリに『【処理】』フィールドという演算フィールドを作成し、レポートでのデータ 表示にはそのフィールドを使用する、ということです。 (クエリのデザインビューで、『フィールド:』欄に以下のような式を指定します)  【処理】: IIF(IsNull([処理2]), [処理1], [処理2]) これであれば、レポートのコントロールのVisibleプロパティを切り替える必要はなくなる と思います。 ※私自身はレポートは殆ど使用しないのですが(汗)、少なくともフォームのコントロール   の場合は、Visibleプロパティは全レコードで共通(=先頭レコードでの評価結果が   全レコードに適用される)ので・・・。   (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗))

SIBUSA
質問者

お礼

ありがとうございました♪

その他の回答 (4)

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

詳細に表示するならば、処理欄という非連結のテキストボックスと コントロールソースがそれぞれ処理1、処理2のテキストボックス 処理1、処理2を同じ詳細に設定し、処理欄のコントロールソースを =IIf(IsNull([処理2]),[処理1],[処理2]) とし、処理1、処理2は重ねておいて両方「可視」を「いいえ」にすれば いいです。 念のために処理1、処理2を可視を「はい」にして 処理欄にデータが意図通りに入っているか確認 してください。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

レポート上のテキストボックス名を「処理」とし、 コントロールソースを =Nz([処理2],[処理1]) とすれば、VBA は必要ないですね。 to DexMachina さん > (レポートでは各レコードの値で個別判定されるのでしたらすみません(汗)) はい、レポートでは各レコードの値で個別判定です。

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

なら 処理2の背景スタイルを『普通』にして、色は・・白とか 処理1は特に設定する必要はありません。(常に表示) で、処理2を処理1の上に重ねて(気持ち大きめ)置いておきます。 (処理2を、書式→最前面へ移動) あとは詳細のフォーマットイベントで Me.処理2.Visible = Nz(Me.処理2, "") = "" では? 印刷時拡張してたりして (^^ゞ

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

レポートの詳細のフォーマット時イベントで Me.処理1.Visible = Nz(Me.処理2, "") = "" Me.処理2.Visible = Nz(Me.処理1, "") = "" で出来ませんかね? 条件付き書式でも良さそうな気もしますが 以下蛇足 ※処理1 と 処理2 のコントロールは二つ並べて置いてあるのですよね? 重ね合わせておいてあれば、両方にデータが入っていた場合は?

SIBUSA
質問者

補足

両方に入っていた場合は、処理2のみ表示です。2つのコントロールは重ねて置いてます。処理2がある場合はうまくいくんですが、処理1のみの場合何も表示されなくなってしまいます。

関連するQ&A

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

  • 取り消し二重線を表示させる方法 その2

    『取り消し二重線を表示させる方法』ではお世話になりました。 おかげさまで快適に処理が進んでおります。 が、また一つ、つまづいてしまいました。 >テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。  保管期限はすべて年度末の日付で設定しています。  質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線 を表示させる方法です。日付フィールドは、元々エクセルデータをコピーしているだけなので  ”2010.12.31”の様に表示されています。 これの回答として >Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  If DateValue(Replace([保管期限], ".", "/")) < Date Then  Me!L1.Visible = True  Me!L2.Visible = True  Else  Me!L1.Visible = False  Me!L2.Visible = False  End If  End Sub と頂きましたが、その他に"備考"というテーブルもあり、レコードによって 〝月"とか"水"など平日の曜日が入っている時があります。お伺いしたいのは、 "火"や"木"が入力されている時は、保存期限が過ぎていても二重線を引かない様にするというのと、フィールド"保管期限"が空白だった時も二重線を引かないというのを上記の記述に追加したいのですが、教えていただけないでしょうか?

  • 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のレポートに取り消し線を表示したい

    いつもお世話になっています。 名簿を作成しているのですが、結婚して姓が変わった場合、 上書きせずに新しい姓を別のテキストボックスに入力します。 これをレポートとして出力する際、新しい姓が入力された場合は、 過去の指名のテキストボックスに二重線を引きたいのですが うまくいきません。 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 お力添えをお願いいたします。

  • 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 としてみましたが、うまく動きませんでした(非表示にならず)。 ちなみにこれらの処理はレポートを開いた後に行ってます。 なので、可視プロパティは開いた後でも変更可能だけど、背景スタイルは不可能 ってことなのでしょうか。 とりあえず可視/非可視の切り替えで、思ったことは出来てはいるのですが こういう場合、一般的にはテキストボックスやラベルを一つずつ可視/非可視 に切り替えたりするものなのでしょうか。それとももっと良い方法があったり するのでしょうか。 ご教示の程、宜しくお願い致します。

  • 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 ⇒ここでひっかかります ---------------------------------------------------------------- たしかにレポートが閉じているのですが…どなたかご教授お願いします。

  • Access レポートの詳細Formatに複数の式

    いつもお世話になっています。 レポートの詳細に結婚して姓が変更になった場合、旧姓に取り消し線を引く という式を作成しました。 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 今回は、住所も変更になって新住所が入力されたら、旧住所に取り消し線を引きたいと 思います。 ただし、変更にならない場合もあるので、別のIF文になります。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If 新住所 <> "" Then Me.取り消し線3.Visible = True Me.取り消し線4.Visible = True Else Me.取り消し線3.Visible = False Me.取り消し線4.Visible = False End If End Sub レポートの詳細_Formatに複数の条件を設定することができるのでしょうか。 お力添えをお願いいたします。

  • アクセス2000のレポートでイメージを表示させたいのですが

    アクセス2000でデータベースを作成しています。レポートについて分からないことがあるので教えてください。 ・ImageFileというフィールドにイメージファイルのフルパスを入力しておき、フォーム上のPictureを配置し、下記のようなコードを記述して、Pictureに、イメージファイルを読み込んで表示させています。 Private Sub Form_Current() If IsNull(Me.ImageFile) Then   Me.イメージ.Picture = "d:\nonimage.jpg" Else: Me.イメージ.Picture = Me![ImageFile] End If End Sub ・同じような方法でレポートでイメージを印刷させることは出来ないでしょうか?  尚、ImageFileはレコード毎に異なるものを使用しています。

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

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

  • accessのレポートで…

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

専門家に質問してみよう