利用規約の変更について

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

書式:ggge\年m\月
定型入力:>L99\年99\月;0;_

このQ&Aに関連する最新のQ&A

A 回答 (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\月")))

長いですが、モジュール無しでも、変換可能だと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/04 17:12

#2です。

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

この回答への補足

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

補足日時:2008/01/04 14:19
    • good
    • 0

もちろん、本当に’昭和61年00月’とは表示不能。


というか、そういう入力自体がそもそも不可能じゃないですか?
ですから、そういう表示問題に遭遇するケースはないと思いますが・・・。

精々、

ID__日付
1___平成17年10月15日
2___??00年00月00日

という表示が限度です。
これですと、未定行の表示として論路的にも成立します。
ということで、発想そのものの再検討が必要なのでは・・・。
    • good
    • 0

日付/時刻型では、月の範囲は1~12なので、0には出来ません。



仰るとおり、日付/時刻型では保存できないと思います。

「00月」を入力した場合、日付型に変換出来ないので、
エラーになると思います。

「00月」と言うデータを残したいのであれば、
取り合えず、文字列型で保存するしかないと思います。

・このデータを、何に利用するのか?
・その際、文字列型では不都合があるのか?

この辺り、考えてみて下さい。
何か不都合があるのなら、補足して下さい。

この回答への補足

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

補足日時:2008/01/04 13:54
    • good
    • 0

駄目ですね。

だって0日(1日未満)とか0月(1ヵ月未満)なんて日付にはありませんから
それと0月なのに年号を表示させるのもおかしいですよね。
0月を表示させるケースは経過年月や年齢の表示くらいではありませんか?

どうしてもというのであれば
クエリで別のフィールドに
日付2:Format([日付],"ggge年")&Format(Month([日付])-1,"00月")
のようにするか
フォームやレポートでテキストボックスのコントロールソースに
=Format([日付],"ggge年")&Format(Month([日付])-1,"00月")
として入力値とは別に表示させるしかありません。

この回答への補足

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

補足日時:2008/01/04 11:12
    • good
    • 0

ggge\年mm\月dd\日



ID__日付
1___平成17年10月15日
2___平成20年01月01日

m -> mm
d -> dd

で、1->01 かと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング