- ベストアンサー
取り消し二重線を表示させる方法
Access2003を使用しています テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。 保管期限はすべて年度末の日付で設定しています。 質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線を表示させる方法です。 いろいろ似た内容の質問を検索しましたが、イベントプロージャの記述は勿論ですが、何処をクリックすると云わんとしている画面がでるのかもわからずにいます。 どなたか教えて下さらないでしょうか?よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>日付フィールドは、元々エクセルデータをコピーしているだけなので >”2010.12.31”の様に表示されています。 日付が”2010.12.31”のようにピリオドで区切られているのですね、 このままでは、Accessが反応してくれないので、日付型に変更 しなければいけません。そこで、コードの中の[保管期限]という ところを書き換えます。[保管期限]を DateValue(Replace([保管期限], ".", "/")) のようにします。これは[保管期限]の中にあるピリオドを/に Replace関数で置き換え、、変更した値をDateValue関数で 日付型に変更している式です。これにより、[保管期限]が 日付型に変更されます。そこで、 If [保管期限] < Date Then としているのを、 If DateValue(Replace([保管期限], ".", "/")) < Date Then とします。Dateは今日の日付を表す関数です。したがって、#1で のコードは、 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 に、変更してください。 >1行目に記載している〝保管期限〝はフォームやレポートに >作成されている保管期限のことでしょうか? そうです。レポートで表示している保管期限ですが、 一応、コードをレポートに貼り付け、レポートを 開いてを開いたとき、参照先が間違っていれば エラーが表示されますから、その時にまた、補足 してください。 なお、念のためにテーブルで保管期限を保存している フィールドの型は、テキスト型、あるいは数値型、 いずれですか?
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
テキスト型でしたか。フィールド のデータ型がわからないので、ピリオドの 取得がうまくいくか多少は不安が あったのですが、うまくいって なによりです。
- piroin654
- ベストアンサー率75% (692/917)
#1です。 >イベントプロージャの記述は勿論ですが、何処をクリックすると >云わんとしている画面がでるのかもわからずにいます。 この部分に関する回答として、 (1) まず、レポートのデザインビューで直線を捕まえて、 右クリックからプロパティシートを表示し、直線の 名前をそれぞれ、L1、L2とします。 (2) 次に、レポートに対象となるデータを詳細のところに 表示していると思いますので、詳細の横バーの上で 右クリックして、プロパティを選択し、プロパティ シートを表示し、その中のフォーマット時を選択し、 右端をクリックしてコードビルダを選択し、#1で 表示したコードの、 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) と End Sub の間を貼り付けます。 これが、なんとなくわかりづらいというのであれば、 レポートをデザインビューで開いておいて、ツールバーの コードをクリックしてコード表を開き、#1のコードを まるごとコピーし、コード表に貼り付け、保存してください。 このとき、(1)の設定は済んでいるものとします。
補足
敏速な回答ありがとうございます。 日付フィールドは、元々エクセルデータをコピーしているだけなので ”2010.12.31”の様に表示されています。 しかしご説明の、 >なお、保管期限はレポートの保管期限を表示している >テキストボックスの名前ではなく、保管期限を表示する >テキストボックスのコントロールソースを指定します。 この部分がどういうことか理解できません。 1行目に記載している〝保管期限〝はフォームやレポートに作成されている 保管期限のことでしょうか? 今日はデータを編集する時間がなかったので、来週やってみようとおもいます。
- piroin654
- ベストアンサー率75% (692/917)
非常に微妙な表現があるので、まず前提条件をこちらで 設定します。 >”受注年月日” ”作成月日” ”保管年数” ”保管期限” これらは、保管年数を除いて日付型のフィールドであるとすれば、 事は簡単です。ところが、 >保管期限はすべて年度末の日付で設定しています。 という記述が問題なのです。単純に保管期限が2010/3/31 のように日付型で設定してあれば、事は簡単です。 もし、日付がただ、31とか3月31日とか3/31だけだと 保管期限の計算をしなくてはなりません。そうすると、 受注年月日から計算するのか、あるいは作成日から計算 するのか、もし作成日からだと作成年月日としていないので 作成した年月はいつなのか、31だけだとお手上げ、 年度末の月日が全て違えば、すべてを明確にしないと 計算できません、など疑問が湧き過ぎて先に進まない ので、あっさり保管期限は日付型で、前もって計算 してある、とします。 直線の名前をL1、L2とします。 レポートの直線を設定している詳細のフォーマット時の イベントで、以下を設定します。 なお、保管期限はレポートの保管期限を表示している テキストボックスの名前ではなく、保管期限を表示する テキストボックスのコントロールソースを指定します。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If [保管期限] < Date Then Me!L1.Visible = True Me!L2.Visible = True Else Me!L1.Visible = False Me!L2.Visible = False End If End Sub つまり、保管期限が現在の日付を過ぎたものは 直線を表示し、過ぎていないものは直線を 表示しない、ということです。
お礼
出来ました (^○^) いつもサイトを参考にして、記載されている通りにしても 一回で出来た事が無かったんですが、今回は一発で やりたい事が出来ました。 年明けに3000件ものエクセルデータに、この二重線をオート シェイプでペーストするという繰り返しでうんざりしてました。 piroin654さん、様々な角度からの丁寧な御説明、本当に ありがとうございました。 ちなみにテーブルの”保管期限”はテキスト型でした。