アプリ版:「スタンプのみでお礼する」機能のリリースについて

accessで処理を行った日付を入力するテキストボックスがあります。

年月日を入力するとそのまま表示されるのですが、
例えば 04/01 と月日のみ入力すると自動的に今年の年をシステムが付け足して
2013/04/01と表示される仕様になっています。

年の部分をわざわざ手入力し、誤入力するリスクを減らしたいので、
年部分はこの仕様で表示させ、月日のみをユーザーが入力できるように
入力規則等で制限をかけたいのですがうまくいきません。

月日のみを入力するにはどう設定すればいいのでしょうか?

また、入力規則に >=#year(now())/01/01#and<=#year(now())/12/31# と入力して
今年以外の入力をはじくよう設定してみたのですがこれもうまくいきませんでした。
この設定がなぜうまくいかないかも併せて教えていただけたら嬉しいです。

宜しくお願いします。

A 回答 (1件)

フォームのテキストボックス名が、日付 だとして


VBAではその更新前処理に、

Private Sub 日付_BeforeUpdate(Cancel As Integer)
Dim x As Variant
x = Split(Me!日付.Text, "/")
If UBound(x) > 1 Then
MsgBox "年は入力できません。"
Cancel = True
End If
End Sub

とすれば、『年』の入力ははじけますが、Access2010?以後では
新しく採用された日付選択カレンダーからの入力もはじいてしまいます。
なので入力規制で下記のように設定すれば、
ユーザーは無駄で面倒な『年』の入力は行わなくなると思います。

>=#year(now())/01/01#and<=#year(now())/12/31# がいけないのは
##で囲むリテラル値の中に関数を混ぜ込んでしまっている。
区切りのスペースがない。の二点です。
>=CDate(Year(Now()) & "/01/01") And <=CDate(Year(Now()) & "/12/31")
のようにするか
Year([日付])=Year(Date())
などとして
その下のエラーメッセージ欄に、
入力できるのは今年の日付だけです。『年』の入力は不要です。
としておけば良さそうに思えます。
※Accessのバージョンによって話が変わってくる場合がありますので次回からは
Accessの(OSも)バージョンを明記しましょう。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。

今日教えていただいた方法で試したところ上手くいきました。
有難うございました。

自分で入力した入力規則が上手くいかない理由も
ネットや本で調べてもわからなかったので非常に勉強になりました。
質問する際のaccessバージョンの表記も覚えておきたいと思います。

有難うございました!!

お礼日時:2013/06/10 19:57

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

このQ&Aを見た人はこんなQ&Aも見ています