• ベストアンサー

ACCESS 日付表示で00月を使用する

日付の表示を昭和61年00月と表示する場合があるのですが データ型 日付/時刻 のフィールド書式プロパティに ggge\年m\月と指定すると00月が使用できません。 00月を使用する場合、日付/時刻型では駄目なのでしょうか? 書式:ggge\年m\月 定型入力:>L99\年99\月;0;_

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.6

>文字列型でもいいのですが、s6100この様に入力した際に >昭和61年00月と表示するにはどのようにすればよいでしょうか?  定型入力:>L99\年99\月;0;_ 最初の質問の定形入力なら、"S61年00月"と言うデータが テーブルに保存されていると思います。 テーブルのデータを変更するのではなく、 表示の際に、"昭和61年00月"にする場合。 新規のモジュールを作成し、下記を記述。適当な名前で保存します。 ----------------------------------------------------------- Public Function MyFormat(data As Variant) As Variant  Dim strDate As String  MyFormat = data  If IsDate(data) Then   MyFormat = Format(CDate(data), "gggee\年mm\月")  Else   strDate = Left("" & data, InStr(1, "" & data, "年"))   If strDate <> "" Then    strDate = strDate & "1月1日"    If IsDate(strDate) Then     MyFormat = Format(CDate(strDate), "gggee\年") & "00月"    End If   End If  End If End Function ----------------------------------------------------------- レポート等に表示する際は、レコードソースを下記の様にします。 =MyFormat([フィールド名]) =========================================================== テーブルのデータその物を、"昭和61年00月"に書き換えたい場合。 テキストボックスのイベント「更新後処理」の イベントプロシージャに、下記を記述します。 ----------------------------------------------------------- Private Sub テキスト0_AfterUpdate()  Me![テキスト0] = MyFormat(Me![テキスト0]) End Sub ----------------------------------------------------------- ・テキストボックス名は、正しい名前に変更してください。 ・上記のモジュールも必要です。 ・定形入力と矛盾するので、データ修正の際に注意が必要です。 =========================================================== ついでに、データを年と月に分けた場合。 年は文字列型("S61"など)、月は文字でも数値でも可。 月が不明な場合は、0又は、Nullとします。 レポート等に表示する際は、レコードソースを下記の様にします。 =IIf(IsNull([年]), Null, IIf(0 = Nz([月]), Format([年] & "/1/1", "gggee\年\0\0\月"), Format([年] & "/" & [月] & "/1", "gggee\年mm\月"))) 長いですが、モジュール無しでも、変換可能だと思います。

sskj
質問者

お礼

ありがとうございます。助かりました。

その他の回答 (5)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

#2です。補足読みました。 >月が分からない場合00月と表記しているので、(例えば生年月日) 方法1.テキスト型で入力する。 方法2.数値型(長整数)で西暦で入力する。 書式は 0000\年00\月 例 200800 → 2008年00月 方法3.年と月を別フィールドにする。

sskj
質問者

補足

ありがとうございます。 別フィールドにするのが一番無難ですかね。 入力に使う資料が和暦なので西暦入力はきついです。 #3の方にも補足で書きましたが、テキスト型でs6100→昭和61年00月 のような表記は出来るのでしょうか?

noname#140971
noname#140971
回答No.4

もちろん、本当に’昭和61年00月’とは表示不能。 というか、そういう入力自体がそもそも不可能じゃないですか? ですから、そういう表示問題に遭遇するケースはないと思いますが・・・。 精々、 ID__日付 1___平成17年10月15日 2___??00年00月00日 という表示が限度です。 これですと、未定行の表示として論路的にも成立します。 ということで、発想そのものの再検討が必要なのでは・・・。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

日付/時刻型では、月の範囲は1~12なので、0には出来ません。 仰るとおり、日付/時刻型では保存できないと思います。 「00月」を入力した場合、日付型に変換出来ないので、 エラーになると思います。 「00月」と言うデータを残したいのであれば、 取り合えず、文字列型で保存するしかないと思います。 ・このデータを、何に利用するのか? ・その際、文字列型では不都合があるのか? この辺り、考えてみて下さい。 何か不都合があるのなら、補足して下さい。

sskj
質問者

補足

文字列型でもいいのですが、s6100この様に入力した際に 昭和61年00月と表示するにはどのようにすればよいでしょうか?

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

駄目ですね。だって0日(1日未満)とか0月(1ヵ月未満)なんて日付にはありませんから それと0月なのに年号を表示させるのもおかしいですよね。 0月を表示させるケースは経過年月や年齢の表示くらいではありませんか? どうしてもというのであれば クエリで別のフィールドに 日付2:Format([日付],"ggge年")&Format(Month([日付])-1,"00月") のようにするか フォームやレポートでテキストボックスのコントロールソースに =Format([日付],"ggge年")&Format(Month([日付])-1,"00月") として入力値とは別に表示させるしかありません。

sskj
質問者

補足

回答ありがとうございます。 別に00月でなくともいいのですが、月が分からない場合00月と表記しているので、(例えば生年月日) 表示方法としては※※でも実際のところ構わないのです。

noname#140971
noname#140971
回答No.1

ggge\年mm\月dd\日 ID__日付 1___平成17年10月15日 2___平成20年01月01日 m -> mm d -> dd で、1->01 かと思います。

関連するQ&A

専門家に質問してみよう