アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。
Access2007を使うことになったのですが、あまり詳しくありません。

レポートで[日付]が入力されている欄があり、一番新しい日付のデータの背景色を付けたいと思っています。
レポートは以下のような感じで、データは、[金額]の数値により並べ替えがされています。

 [金額]  [日付]
 5,250   2014/05/31
 3,400   2014/03/01
 2,000   2014/04/11
 4,680   2014/06/01

条件付き書式で出来るのではないかと思うのですが、よくわかりません。よろしくお願いします。
どうぞよろしくお願いします。

A 回答 (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([日付])>でも実現できる筈です。

この回答への補足

ありがとうございます。
ご指摘いただいたとおり、背景色が透明にになっておりました。

補足日時:2014/08/31 09:27
    • good
    • 0
この回答へのお礼

ありがとうございました。
最後まで丁寧にアドバイスをいただきまして、たいへん勉強になりました。
これからも自分なりにスキルを磨いていきたいと思います。

お礼日時:2014/08/31 09:29

横から失礼します。



条件式が正しいにもかかわらず
バックカラーが変更されない(表示されない)場合として
テキストボックスの「背景スタイル」が「透明」になっていることが考えられます。

プロパティをご確認ください。

この回答への補足

ご指摘の通り、背景が「透明」になっておりました。
この部分をなおしたら、表示されました。

みなさんありがとうございました。

補足日時:2014/08/31 09:25
    • good
    • 0

補足:1と2とは、同じようですが厳密には違います。



詳細部においては、両者の差異は表面化しません。ですから、極めて特殊な場合においてのみです。
    • good
    • 0

もしかしたら・・・・。



Max([日付])<>DMax("日付", "クエリ6")

ということが表面化しているのかもです。

1、Max([日付])・・・・・・・・・・・・・・・・・レポートの特定グループ内の最大値
2、DMax("日付", "クエリ6")・・・・・・レポート内の最大値

1と2とは、同じようですが厳密には違います。
    • good
    • 0

エラーも出ない代わりに色も変わらないということ?


もう一度試してみてください。
念のために旧Access2002でも確認してみました。
2007だけダメってことは無いハズです。
『日付』という名前のフィールドはありますよね?
    • good
    • 0

Access2007は持ち合わせておりませんが


『式』に、[日付]=Max([日付])
で良さそうに思えますけど?
レポートを開くときにフィルターを設定していても大丈夫ですし。。。
「Access2007 日付による条件書式」の回答画像5

この回答への補足

ありがとうございます。
試してみましたが、出来ませんでした。

他の方法をご存じでしたらご紹介いただけると助かります。

補足日時:2014/08/29 15:19
    • good
    • 0

補足: 先に回答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のやり方も試されたらどうでしょう。
「Access2007 日付による条件書式」の回答画像4
    • good
    • 0

Q、常に今日を基準に・・・。


A、それは、ありえません。

最新日付=DMAX([日付],"クエリXXX")

[最新日付]とは、あくまでもレポートのもととなっているクエリ等に含まれる行の中の最大値です。WHERE節の条件を基準にする必要があります。その条件が今日であれば、それはそれでOKです。
    • good
    • 0

補足: クエリ改変が面倒ならば・・・

「Access2007 日付による条件書式」の回答画像2
    • good
    • 0

添付図では、あらかじめ[最新日付]という列を生成しています。

これは、非表示にすべきですが、ここでは表示しています。こういう仕掛けをすると、簡単に[条件付き書式]を設定できるかと思います。

SELECT
  売上伝票.ID,
  売上伝票.日付,
  売上伝票.伝票番号,
  売上伝票.売上金額合計,
  CBool(DCount("*",
           "売上伝票",
           "日付 > #" & [日付] & "# AND 日付 <= #8/19/2014#")=0) AS 最新日付
FROM 売上伝票
WHERE (((売上伝票.日付)<=#8/19/2014#));
「Access2007 日付による条件書式」の回答画像1

この回答への補足

f_a_007 様

早速回答を寄せていただきましてありがとございます。

回答内容の式で以下の部分についてですが 

 "日付 > #" & [日付] & "# AND 日付 <= #8/19/2014#")=0) AS 最新日付

#8/19/2014# の部分ですが、8月19日を基準にするという意味ですか。

常に今日を基準にするようにできたらいいのですが、そのようにはできるでしょうか。

補足日時:2014/08/28 20:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!