• ベストアンサー

取り消し二重線を表示させる方法

Access2003を使用しています テーブルに”受注年月日” ”作成月日” ”保管年数” ”保管期限”というフィールドがあります。 保管期限はすべて年度末の日付で設定しています。 質問は、レポートもしくはフォームを作成して印刷時、保管期限が過ぎた行に赤い取り消し二重線を表示させる方法です。 いろいろ似た内容の質問を検索しましたが、イベントプロージャの記述は勿論ですが、何処をクリックすると云わんとしている画面がでるのかもわからずにいます。 どなたか教えて下さらないでしょうか?よろしくお願いいたします。

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

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

>日付フィールドは、元々エクセルデータをコピーしているだけなので >”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行目に記載している〝保管期限〝はフォームやレポートに >作成されている保管期限のことでしょうか? そうです。レポートで表示している保管期限ですが、 一応、コードをレポートに貼り付け、レポートを 開いてを開いたとき、参照先が間違っていれば エラーが表示されますから、その時にまた、補足 してください。 なお、念のためにテーブルで保管期限を保存している フィールドの型は、テキスト型、あるいは数値型、 いずれですか?

laychel
質問者

お礼

出来ました (^○^) いつもサイトを参考にして、記載されている通りにしても 一回で出来た事が無かったんですが、今回は一発で やりたい事が出来ました。 年明けに3000件ものエクセルデータに、この二重線をオート シェイプでペーストするという繰り返しでうんざりしてました。 piroin654さん、様々な角度からの丁寧な御説明、本当に ありがとうございました。 ちなみにテーブルの”保管期限”はテキスト型でした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

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

テキスト型でしたか。フィールド のデータ型がわからないので、ピリオドの 取得がうまくいくか多少は不安が あったのですが、うまくいって なによりです。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

#1です。 >イベントプロージャの記述は勿論ですが、何処をクリックすると >云わんとしている画面がでるのかもわからずにいます。 この部分に関する回答として、 (1) まず、レポートのデザインビューで直線を捕まえて、 右クリックからプロパティシートを表示し、直線の 名前をそれぞれ、L1、L2とします。 (2) 次に、レポートに対象となるデータを詳細のところに 表示していると思いますので、詳細の横バーの上で 右クリックして、プロパティを選択し、プロパティ シートを表示し、その中のフォーマット時を選択し、 右端をクリックしてコードビルダを選択し、#1で 表示したコードの、 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) と End Sub の間を貼り付けます。 これが、なんとなくわかりづらいというのであれば、 レポートをデザインビューで開いておいて、ツールバーの コードをクリックしてコード表を開き、#1のコードを まるごとコピーし、コード表に貼り付け、保存してください。 このとき、(1)の設定は済んでいるものとします。

laychel
質問者

補足

敏速な回答ありがとうございます。 日付フィールドは、元々エクセルデータをコピーしているだけなので ”2010.12.31”の様に表示されています。 しかしご説明の、  >なお、保管期限はレポートの保管期限を表示している  >テキストボックスの名前ではなく、保管期限を表示する  >テキストボックスのコントロールソースを指定します。 この部分がどういうことか理解できません。 1行目に記載している〝保管期限〝はフォームやレポートに作成されている 保管期限のことでしょうか? 今日はデータを編集する時間がなかったので、来週やってみようとおもいます。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

非常に微妙な表現があるので、まず前提条件をこちらで 設定します。 >”受注年月日” ”作成月日” ”保管年数” ”保管期限” これらは、保管年数を除いて日付型のフィールドであるとすれば、 事は簡単です。ところが、 >保管期限はすべて年度末の日付で設定しています。 という記述が問題なのです。単純に保管期限が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 つまり、保管期限が現在の日付を過ぎたものは 直線を表示し、過ぎていないものは直線を 表示しない、ということです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 取り消し二重線を表示させる方法 その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 2007 のフォームの日付について

    access 2007 のフォームの日付について こんにちは さっそくですが質問させていただきます 立山秀利さん著の「ツボとコツがゼッタイにわかる本」で access2007の勉強をはじめたのですが、 二つのテーブル、 「注文履歴」  【フィールド:注文ID(主キー)、商品コード、個数】と、 「商品マスター」【フィールド:商品コード(主キー)、商品名、単価】を作成し、 商品コードを結合フィールドとして、リレーションを作ったのですが、 注文履歴のテーブルに、フィールド「日付(受注した年月日、書式は日付s )」を追加して、 作成→フォーム→その他のフォーム→フォームウィザードで、 この二つのテーブルから、by注文履歴のフォームを作成したのですが、 注文履歴のテーブルでは正しく日付が表示されていたのですが、 フォームの日付では#が十個ぐらいならんで、表示されてしまいました フォームでも日付が正しく表示されるようにするには、どのようにすればよいのか どなたか、回答していただけないでしょうか よろしくお願いします

  • access2003で生年月日から年度初めの年齢を算出したいのですが…

    Access2003で名簿を作成中です。 やりたいことは以下の2つです。 1.クエリで、"生年月日"フィールドから年度初め(2010/4/1現在)の年齢を自動的に"年齢"フィールドに表示させたい 2.上記のクエリをもとに、新規入力用のフォームをつくり、やはり生年月日を入れたら自動的に年度初めの年齢が出るようにしたい。 これに必要な設定や記述を教えてください。 ちなみにクエリのもとにしているテーブルの"生年月日"フィールドのデータ型は「日付/時刻型」にし、書式は「日付(S)」にしています。 よろしくお願いします。

  • アクセスでレポートに和暦を表示させるには

    アクセスで社員名簿を作成しています テーブルを 社員名  ○○○○ 生年月日 1953/09/18 生年月日 空欄 フォームは 社員名  ○○○○ 生年月日 1953/09/18 和暦   昭和28年09月18日      ↑生年月日を入力すると自動で表示されるようにしました レポートは 社員名  ○○○○ 生年月日 1953/09/18 和歴   空欄 上記で理解して頂けるか大変不安ですがフォームで和暦を手入力していないのでテーブルに反映しません それに伴ってレポートも表示されません どうしたらレポートへ和暦を表示することが出来るのでしょうか

  • Access2010 更新データのレポート表示

    Access初心者です。 新規データを入力しても、レポートが更新されずに困っています。 (テーブルや、フォーム内では、データは更新されています) エクセルデータをAccess2010にインポートして、元テーブルを作成しました。 元テーブルを元に、フォーム・レポート・検索クエリ(年度別・分類別)等を作成しました。 ここまでの作業で、新規データの入力はありませんでした。 ところが・・・ 新規データをフォームに入力すると、元テーブルは更新されますが、既に作成しているレポートには、新規レコードが表示(反映)されません。 更新されている元テーブルを元に、もう一度レポートを作成しても、新規レコードは表示されません。 ホームタブの「全て更新」ボタンをクリックしても、新規レコードはレポートには表示されません。 尚、Access初心者です。 「更新クエリ」なるものは、作成していません。というか、「更新クエリ」って何?状態です。 また、クエリそのものが良くわかっておらず、作成したクエリは全て「検索」のためのクエリで、抽出条件に「 [] 」を入力したり、フィールドに「 年度: Year(DateAdd("m",-3,[発送日])) 」を入力したりしかできません。 勿論、リレーションシップって何???状態です。 どうしたらよいのでしょうか??? どなたか、初心者でもわかるように、教えていただけないでしょうか? 宜しくお願いいたします。

  • 非連結のテキストボックスにフォーム値を元に表示する

    ACCESS2013です。 単体テーブル:受注 でフォームを作成しております。 最初は、3つ以上のテーブルをクエリーで作成して、それでフォームを作成しようと考えて いましたが、3つ以上のテーブルクエリーでフォームを作成すると、項目の編集ができません。 ダイナセットから矛盾ありの設定にすると、編集ができるようになりますが、各フィールド間 の連携が無くなってしまいます。 受注画面に店コードを入力すると、その店の該当エリア名を非連結のテキストボックスに 表示したいです。 マスタテーブルとして、  M_店(店コード、店名、エリアコード)  M_エリア(エリアコード、エリア名)   受注テーブル(受注No.、店コード・・・・) フォーム上の非連結テキストボックスのコントロールソースに設定できれば一番いいのですが。 どうぞ、よろしくお願いします。

  • accessで年度の表示をさせたい

    いつもお世話になります。過去ログ参照し、いろいろやってみましたが、どうしても解決できないのでよろしくお願いします。 商品の売上の管理をするDBをつくろうとしています。 テーブルに会社マスタとして、会社名と会社IDが、商品マスタには商品名と商品IDが、伝票には伝票番号、会社番号、商品番号、日付、年度のフィールドが作ってあります。 伝票を入力するためのフォームとクエリも作成しています。 伝票を入力するフォームに年度というテキストボックスを作成し、コントロールソースに=IIf(Month([txt])<4,Format(DateAdd("yyyy",-1,[日付のテキストボックス名]),"gggee" & "年度"),Format([日付のテキストボックス名],"gggee" & "年度")) を入力し、日付が決定されると年度を表示されるようにしたかったわけです。 本来、日付のフィールドはデータ型に、「日付/時刻型」を選んでおり、日付カレンダーの表示により、目的の日にちを選択することでyyyy/mm/ddの表示をさせているものです。定型入力の欄は空白になっています。 ところが、フォームをデザインビューで開くと年度の欄に「#Name?」 の表示が出てしまいます。基本的なことなのでしょうが、わかりやすく説明していただけないでしょうか? あと、~月度のような考え方はどのようにしたらよいでしょう?

  • Accessでフィールドを追加したい

    Accessであるシステムを作成しているのですが、いくつか不明な点があるのでアドバイスをお願いします。 「社員情報」をいうテーブルがあり、初期の状態で「社員番号」「氏名」「入社年月日」「年齢」とフィールドがあります。 このテーブルを基にフォーム「社員情報入力」も作ってあります。 ここで新たに、社員情報テーブルに「生年月日」「連絡先」など、フィールドを追加したいのですが・・・以下のような条件があるので、どうしていいのかわからず困っています。 【条件】 ・フィールド追加用のフォーム(新規フィールド名を入力させる)を作り、そこからフィールドを追加させる。(直接テーブルはいじらせないため) ・追加したフィールドを社員情報入力フォームに反映(表示)させたい ・追加したフィールドをレポートにも反映(表示)させたい このような条件でフィールドの追加は無理なのでしょうか? アドバイスや参考になるページを教えてください。 よろしくお願いします。

  • access2003初心者です。50商品の在庫管理をしています。

    access2003初心者です。50商品の在庫管理をしています。 作成したのは ・商品テーブル(商品コード、商品名) ・受注テーブル(日付、商品コード、個数) です。 受注テーブルには受注があった商品のデータしか入力していません。 しかしレポートでは、すべての商品を並べて 「受注がない商品については、数量を0」 としてレポートを作成したいと考えています。 レポートを作成するには、「元となるテーブルやクエリが必要になってくる」と本に書いてあったのですが、 この元となるクエリを作成することができません。 作成したいクエリは次のとおりです。   日付   商品 個数 2008/04/01 商品01 2 2008/04/01 商品02 0←このデータ(日付、商品、個数)は受注テーブルにはありません。以下同じ。 ・ ・ ・ ・ ・ ・ 2008/04/01 商品50 2 2008/04/02 商品01 1←ここから日付が翌日になります。 2008/04/02 商品02 1 ・ ・ ・ ・ ・ ・ 2008/04/02 商品50 0 2008/04/03 商品01 2←ここから日付が翌々日になります。 2008/04/03 商品02 2 ・ ・ ・ ・ ・ ・ データがないものに対して、 自動で日付を入力したり、個数を0にしたりしたいのですが、 どのような抽出条件またはSQLなどを書いたらいいのかわかりません。 よろしくお願いします。

  • Acccess・レポートで2つの条件を満たすもののカウント

    フォーム1から「年度」を入力してテーブルから検索結果をレポートへ表示。 その中に「フィールド1」という項目があります。 この「フィールド1」の項目の数を数えたいのですが、条件が、 ●上記のフォームから入力した年度であること ●「フィールド1」の値が「1」であるもの を数えたいのです。 2つ目の条件だけでしたら =DCount("フィールド1","T_印刷用テーブル","フィールド1=2") のようにできるのですが… 式でもモジュールでもかまいませんので教えてください。

このQ&Aのポイント
  • 【HL-LC3230CW】プリンターが無線Wi-Fiにつながらない時の対処法を解説します。
  • 無線Wi-Fiにつなぐ際の「パスワード」の入力方法がわからない場合の対処方法をご紹介します。
  • 問題解決のためのヒントや具体的な手順をまとめた記事です。
回答を見る