- ベストアンサー
Access2007 日付による条件書式のしかた
よろしくお願いします。 Access2007を使うことになったのですが、あまり詳しくありません。 レポートで[日付]が入力されている欄があり、一番新しい日付のデータの背景色を付けたいと思っています。 レポートは以下のような感じで、データは、[金額]の数値により並べ替えがされています。 [金額] [日付] 5,250 2014/05/31 3,400 2014/03/01 2,000 2014/04/11 4,680 2014/06/01 条件付き書式で出来るのではないかと思うのですが、よくわかりません。よろしくお願いします。 どうぞよろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
【単純な設定ミスの検証】 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Me.日付 = DMax("日付", Me.RecordSource) Then Me.日付.BackColor = RGB(255, 0, 0) Else Me.日付.BackColor = RGB(255, 255, 255) End If End Sub 普通にウィザードで生成したレポートの詳細部ではDMax()=Max()が成立します。その場合、全くエラーが出ずにバックカラーが変更されないことはありえません。その場合に考えられるのは、バックカラーを設定し忘れていることです。そのことは、上記のコードを Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) ここにコピペ End Sub することで検証できます。 仮に、これでバックカラーが変われば<[日付]=Max([日付])>でも実現できる筈です。
その他の回答 (9)
- m3_maki
- ベストアンサー率64% (296/460)
横から失礼します。 条件式が正しいにもかかわらず バックカラーが変更されない(表示されない)場合として テキストボックスの「背景スタイル」が「透明」になっていることが考えられます。 プロパティをご確認ください。
補足
ご指摘の通り、背景が「透明」になっておりました。 この部分をなおしたら、表示されました。 みなさんありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
補足:1と2とは、同じようですが厳密には違います。 詳細部においては、両者の差異は表面化しません。ですから、極めて特殊な場合においてのみです。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
もしかしたら・・・・。 Max([日付])<>DMax("日付", "クエリ6") ということが表面化しているのかもです。 1、Max([日付])・・・・・・・・・・・・・・・・・レポートの特定グループ内の最大値 2、DMax("日付", "クエリ6")・・・・・・レポート内の最大値 1と2とは、同じようですが厳密には違います。
- NotFound404
- ベストアンサー率70% (288/408)
エラーも出ない代わりに色も変わらないということ? もう一度試してみてください。 念のために旧Access2002でも確認してみました。 2007だけダメってことは無いハズです。 『日付』という名前のフィールドはありますよね?
- NotFound404
- ベストアンサー率70% (288/408)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
補足: 先に回答No.2でアタック。 ・売上伝票は添付図のようです。 ・回答1のクエリは、 SELECT 売上伝票.ID, 売上伝票.日付, 売上伝票.伝票番号, 売上伝票.売上金額合計, CBool(DCount( "*", "売上伝票", "日付 > #" & [日付] & "# AND 日付 <= #8/19/2014#")=0) AS 最新日付 FROM 売上伝票 WHERE (((売上伝票.日付)<=#8/19/2014#)); ・回答2のクエリは、 SELECT 売上伝票.ID, 売上伝票.日付, 売上伝票.伝票番号, 売上伝票.売上金額合計, FROM 売上伝票 WHERE (((売上伝票.日付)<=#8/19/2014#)); 回答2の場合は、[最新日付]を判定も求めてもいません。条件付き書式設定で DMax("日付", "クエリ6") で値を指定しています。 まあ、超簡単なのはNo.2のやり方でしょう。それに成功されたら、NO.1のやり方も試されたらどうでしょう。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、常に今日を基準に・・・。 A、それは、ありえません。 最新日付=DMAX([日付],"クエリXXX") [最新日付]とは、あくまでもレポートのもととなっているクエリ等に含まれる行の中の最大値です。WHERE節の条件を基準にする必要があります。その条件が今日であれば、それはそれでOKです。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
添付図では、あらかじめ[最新日付]という列を生成しています。これは、非表示にすべきですが、ここでは表示しています。こういう仕掛けをすると、簡単に[条件付き書式]を設定できるかと思います。 SELECT 売上伝票.ID, 売上伝票.日付, 売上伝票.伝票番号, 売上伝票.売上金額合計, CBool(DCount("*", "売上伝票", "日付 > #" & [日付] & "# AND 日付 <= #8/19/2014#")=0) AS 最新日付 FROM 売上伝票 WHERE (((売上伝票.日付)<=#8/19/2014#));
補足
f_a_007 様 早速回答を寄せていただきましてありがとございます。 回答内容の式で以下の部分についてですが "日付 > #" & [日付] & "# AND 日付 <= #8/19/2014#")=0) AS 最新日付 #8/19/2014# の部分ですが、8月19日を基準にするという意味ですか。 常に今日を基準にするようにできたらいいのですが、そのようにはできるでしょうか。
お礼
ありがとうございました。 最後まで丁寧にアドバイスをいただきまして、たいへん勉強になりました。 これからも自分なりにスキルを磨いていきたいと思います。
補足
ありがとうございます。 ご指摘いただいたとおり、背景色が透明にになっておりました。