よろしくお願いいたします。
フォームに、非連結テキストボックスが2つあり、それぞれ西暦年、月を入力します。
それとは別に、日付フィールドの連結テキストボックスで、カレンダーによる入力をする際、
非連結テキストボックスの年と月を読み込んで、その月を表示させたいです。
普通にカレンダーが表示されると今日の月が表示されます。
何か手はありますでしょうか?
よろしくお願いいたします。
フォームに、非連結テキストボックスが2つあり、それぞれ西暦年、月を入力します。
それとは別に、日付フィールドの連結テキストボックスで、カレンダーによる入力をする際、
非連結テキストボックスの年と月を読み込んで、その月を表示させたいです。
普通にカレンダーが表示されると今日の月が表示されます。
何か手はありますでしょうか?
日付選択カレンダーを表示したときに選択されている日付は、コントロールに日付が入力されている場合はその日付、入力がない場合は「今日」になるようです
非連結の2つのテキストボックスの更新時で日付フィールドの連結テキストボックスに日付を入力するようにするか、新規レコードの場合であれば、規定値プロパティを変更しても反映されます
ご回答ありがとうございます。
テーブルは、「日付」 日付/時刻型フィールド
フォームは、このテーブルがレコードソースになってます。
単票形式フォームです。
非連結テキストボックス 「対象年」、「対象月」があります。
連結テキストボックス「日付」があります。
「日付」を入力する際、カレンダーが表示されますが、
「対象年」と「対象月」が入力されていたらその月のカレンダーを表示してほしいです。
hiroton様
非連結のテキストボックスに入力したら、連結テキストボックスは空欄の状態で、入力する際に日付カレンダーをその月で表示してほしいです。
非連結の月に絞って、ユーザーが連結テキストボックスでカレンダーから入力してほしいです。
どうでしょうか。
ACCESSの仕様的に「日付」テキストボックスだけではどうしようもないかなーと思ってます
直接入力を禁止し、カレンダーからしか選べないような形であれば、入力用のテキストボックスを使ってどうにかなるかもしれません
入力用に「日付カレンダー」テキストボックス(非連結)を用意します。幅プロパティを「0cm」にし、「日付」テキストボックスの左端に重なるように設置して見た目上見えないようにします
以下、VBAを使って、「日付カレンダー」(見えないテキストボックス)で日付選択カレンダーを表示し、カレンダーの日付選択時に「日付」テキストボックスに値を設定するサンプルです。
※カレンダーで選択した値を反映させるために変更時('change')イベントを使ってコントロールの移動('setFocus')をしています。「
Me!次のコントロール」は適切なものを指定してくださいこの部分はキーボード操作向けのおまけ対策です
通常、[TAB]で次のコントロール[Shift]+[TAB]で前のコントロールに移動しますが、
・カレンダーを表示
↓
・[ESC]でカレンダーを非表示
↓
・[Shift]+[TAB]で前のコントロールに移動
とすると、「日付」テキストボックスに戻って「日付」テキストボックスのフォーカス取得時イベントが発生して再び「日付カレンダー」に戻ってくる(動かない)ので「日付」テキストボックスを飛ばしてさらにその前のコントロールに移動できるように制御しています
ついでに、いろいろ触っていたら、この状態([ESC]でカレンダーを非表示にした状態)で何か入力するとエラーが発生したので対策を置いておきます
「何か入力」すると、たいていそれは日付として認識できないので、その状態でフォーカスを移動しようとしてエラーが発生します。とりあえず、エラーが発生したら何もしないで再度カレンダー表示に戻すって形で
ご希望のUIが搭載された
日付ピッカーは、おそらく以下で紹介するようなコンポーネントでしょうなお、Colin Riddington(isladogs)氏作の日付ピッカーを利用する場合、
バージョン 1.5 や 1.6 は入力フォームでのコード量も少ないですし、説明動画も用意されていることから
ご自身で仕組みを理解し、運用なさることをお薦めします
hiroton様、mayu様
情報ありがとうございます。
両方とも試してみます!
何とか解決法が見つかりそうで、うれしいです。
ありがとうございました。