• ベストアンサー

【ACCESS】年度の求め方

あるテキストボックスに、YYYY/MM/DDの形で日付を入力し、 その月の数字によって、別フィールドに○年度と表示させたいのですが、 やり方が分かりません。どなたか教えてください。

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

  • ベストアンサー
  • vantage
  • ベストアンサー率60% (310/514)
回答No.2

テキストボックス年度を表示ということなら、コントロールソースに =IIf(Month([txt])<4,Format(DateAdd("yyyy",-1,[日付のテキストボックス名]),"gggee" & "年度"),Format([日付のテキストボックス名],"gggee" & "年度")) ではどうでしょうか。 あるいはVBAで Private Sub 日付のテキストボックス名_AfterUpdate() If Month([日付のテキストボックス名]) < 4 Then  Me!年度のテキストボックス名 = Format(DateAdd("yyyy", -1, [日付のテキストボックス名]), "gggee" & "年度") Else  Me!テキストボックス名 = Format([日付のテキストボックス名], "gggee" & "年度") End If End Sub 例では、年度は4月から、 表示は「“元号2文字”&“年”&“年度”」ですので、適宜状況にあわせて変更してみてください。

00hiroto00
質問者

お礼

ありがとうございました。 非常に参考になり、解決しました!!

その他の回答 (1)

  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

一番簡単なのはテーブルでは年度を作らないで クエリーで計算するのがいいでしょう。 テーブルのフィールドをそのまま全て選択して クエリーを作ります。 そのクエリーをデザインで開いて 日付の次に列を3つ挿入します。 そのフィールドに以下の関数を設定します。 ●最初の列 年:Year([日付]) とします ●次の列 月:Month([日付]) とします。 この年と月から年度を計算します。 例えば2004年4月から16年度であるとすると ●3つ目の列 年度: [年]-1988+([月]<4) 質問があれば遠慮なく聞いてください。   

00hiroto00
質問者

補足

回答、ありがとうございます。 やはり、クエリではなくてフォーム上で行いたいのですが…。 Nowを使わずに、"入力した日付"を元に年度を割り出したいのですが…。

関連するQ&A

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

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

  • accessのtextboxの日付nul時書式設定

    accessの日付を入力するテキストボックスの書式を使って 未入力の時は、「____年__月__日」と表示させ、 入力時にyyyy年mm月dd日 という書式を適用させようと思っています microsoftのヘルプには 「数値フィールドまたは通貨フィールドの書式を設定する」 正、負、ゼロ (0)、Null (未定義) の 4 種類の数値に書式を指定できる」 とあるので、それにならって 「yyyy\年mm\月dd\日;;;"____年__月__日"」 としました。 しかし、これで未入力のときは確かに 「____年__月__日」と表示されるのですが、 テキストボックスがフォーカスに移動すると、 「____年__月__日」という値がのこってしまい消えません (deleteやbackspaseで削除しなければいけません) 「;;;"____年__月__日"」 や 「0;;;"____年__月__日"」 の場合はテキストボックスにフォーカスが移動するとともに ちゃんと値がきえるのですが、日付の場合はnullの書式設定はできないのでしょうか? この現象のために、いちいちvbaで対応しなければならず不便に思っています。

  • accessのフォームで日付を定形入力にした場合

    access2000です。 フォームでテキストボックスに日付を入力しているのですが、定形入力にしてyyyy/mm/ddの形にしています。 テキストボックスをクリックすると必ず、カーソルがdの後ろあります。今はカーソルクリックし直すなどしていますがとても面倒です。テキストボックスをクリックしたら、yの先頭にカーソルくるようにできないですか?

  • アクセス2007 複数フィールドで最古日を表示

    以下のテーブルがあります。  フィールドA=受注日付 (日付型 yyyy/mm/dd)  フィールドB=申込日付 (日付型 yyyy/mm/dd)  フィールドC=着手日付 (日付型 yyyy/mm/dd)  フィールドD=”ここに関する質問です。”(日付型 yyyy/mm/dd)  フィールドA~Cの中で、一番昔の日付レコードをフィールドDに表示させるための関数の入れ方が分かりません。  単一フィールドにあるレコードで、最古日、最新日を抽出する方法はほかの質問でも挙がっているのですが、複数フィールドの中から選択肢、新たなフィールドに表示させる方法が中々見当たらず質問させていただきました。  例)   [A]      [B]    [C]       [D] 2011/11/1  2012/1/1 2012/3/1  → 2011/11/1  ※A~Cの中で一番古いのは「A」なので、DにAの日付を表示させる。 何方かご教授、よろしくお願いいたします。

  • Access2007の経過年数を出す関数を教えてください。

    Access2007でフイールドにフイールド名BEGDATEに「yyyy/mm/dd」が書き込んでありもう一つのフイールドにフイールド名ENDDATEに「yyyy/mm/dd」が記録されています。 この「BEGDATEのyyyy/mm/dd」と「ENDDATEのyyyy/mm/dd」の経過年数、月数、日数をたとえば40年5ヶ月10日だとすれば 40.5.10と表示させるにはこれを表示させるボックスのコントロールソースにどのような関数を書いたらよいのでしょうか。 因みにAccess2003時代は=PASSAWAY([BEGDATE],[ENDDATE])と言う簡単な関数で出来ていましたが今これを使うと#NAME?のエラーになってしまいます。

  • エクセルVBA セルの書式につい

    ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。  Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。

  • エクセルVBA フォームのテキストボックスの入力規則

    エクセル2000を使用しています。 VBAでフォームを作成しています。日付の入力項目をテキストボックスで 作りたいのですが、”yyyy/mm/dd”の形式で入力するようテキストボックスの中に表示し、それ以外の入力形式を制限するにはどのようにしたらよいでしょうか。

  • フォームをレポートのレコードソースにできる?

    フォーム上に「yyyy/mm/dd」と日付を入力するテキストボックスを設けて、レポート上にそのテキストボックスの日付をソースにして表示させたいのですが、可能でしょうか? より詳しいことを申し上げると、クエリ内で「between」を使っています。 開始日と終了日のふたつの日付を表示させたいのです。 可能でしょうか? ちなみにAccessのバージョンは2000です。

  • ACCESSの日付形式

    テーブルに日付形式のフィールドがあり、エクスポートすると、形式がyyyy/mm/dd hh:mm:ddになってしまいます。 yyyy/mm/dd形式でエクスポートするには、どのようにしたらよいでしょうか。 VBAのDocmd.TransferTextで行いたいと思います ちなみにAccess97です。 よろしくお願いします

  • 日付型のテキストボックスに数値を入れて日付にしたい

    アクセスのフォームの上にテキストボックスがあり、 書式はyyyy/mm/dd(aaa)になっています。 日付型の値を入力した際は問題ないのですが 例えば、20130720と入力したら、 このフィールドに入力した値が正しくありません。 例えば、数値型のフィールドに文字列を入力しました。 となります。 なので、 Private Sub 日付_BeforeUpdate(Cancel As Integer) If Len(Me.ActiveControl.Value) = 8 Then Me.ActiveControl.Value = Format(Me.ActiveControl.Value, "yyyy/mm/dd") End If End Sub としてみたのですが、 更新前処理イベントが発動する前に、 「このフィールドに入力した値が正しくありません。 例えば、数値型のフィールドに文字列を入力しました。」 のエラーが出てしまうようです。 20130720の形の日付を入れても自動で日付型に変換するの方法はありますか?