• ベストアンサー

ACCESSの日付について。

テキストボックスが4つあります。 それぞれのテキストボックスに テキストボックス1⇒「西暦」 テキストボックス2⇒「月」 テキストボックス3⇒「日」 を入力し、テキストボックス4にそれらを合わせた ⇒「西暦」/「月」/「日」 とかえすようにしたいのですが、 それそれのテキストボックスの『書式』・『コントロールソース』はどのようにしたら良いでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

テキストボックス1⇒「西暦」 テキストボックス2⇒「月」 テキストボックス3⇒「日」 を入力し、テキストボックス4にそれらを合わせた ⇒「西暦」/「月」/「日」 フォームの元となっているレコードソース(テーブルやクエリなど)との ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 関連が開示されていないので、単純に年月日を出す場合について「怪答」します。 ~~~~~~~~~~~~~~~~~~~~~~ それぞれのボックス名をTB1~TB4として TB1~TB3 までを選択し IME入力モード保持 → いいえ IME入力モード → オフ (全角文字の排除) 書式 → 固定 小数点以下表示桁数 → 0 TB1だけを選択 データ → 入力規制 → >99 And <9999 規定値 → =Year(Date()) TB2だけを選択 データ → 入力規制 → >0 And <13 規定値 → =Month(Date()) TB3だけを選択 データ → 入力規制 → >-1 And <32 規定値 → =Day(Date()) TB4にはコントロールソースに =DateSerial([tb1],[tb2],[tb3]) 編集ロック → はい TB1~TB3まで規定値を設定してあるのは、ここに値がないと TB4にエラーが出るので、苦肉の策です。 TB3に0(ゼロ)を入れた場合は前月の月末が出ます。 これでありえない日付は大体弾けますが、大の月・小の月・うるう年の区別は つきませんので、やるとしたら T4のコントロールソースを =IIf(Month(DateSerial([tb1],[tb2],[tb3]))=[TB2],DateSerial([tb1],[tb2],[tb3]),0) とでもすると分かりやすいかも? 但しこの場合は前月末も出てきません。

kuwagatanon
質問者

お礼

ありがとうございます~! それにしても一つの問題に対して色々答えが出るものですね…。 nicotinismさんのが一番緻密で私の要望には一番合っていました。 内容もすごい分かりやすかったです! なんか「とっつきにくい」と思っていたACCESSが楽しくなってきました。 また相談に乗ってくださいね♪

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>テキストボックス4にそれらを合わせた「西暦」/「月」/「日」とかえすようにしたい 特に難しい記述は必要ありません。 テキストボックス3の更新後処理に Me!テキストボックス4=CDate([テキストボックス1] & "/" & [テキストボックス2] & "/" & [テキストボックス3]) とすればテキストボックス1~3まで順に入力しテキストボックス3に「日」を入力しEnterキーなどを押された時点でテキストボックス4に日付として代入できます。 Private Sub テキストボックス3_AfterUpdate() Me!テキストボックス4=CDate([テキストボックス1] & "/" & [テキストボックス2] & "/" & [テキストボックス3]) End Sub こんな感じです。

kuwagatanon
質問者

お礼

いや~すごい! ありがとうございます!! こんなにシンプルで且つ明瞭な説明… また色々ご教授ください! ありがとうございました。

  • enon39
  • ベストアンサー率0% (0/1)
回答No.1

テキストボックス1,2,3 の書式は「数値」で、コントロールソースはテーブルに直結していなければ設定する必要は無いと思います。 テキストボックス4への代入ですが、 text4=format$(trim(str$(text1))+"/"+trim(str$(text2))+"/"+trim(str$(text3)),"yyyy/mm/dd") で日付が代入出来ます。更新イベントやフォーカスイベントで値を代入すればいいと思います。 月,日の入力値以上(40日とか15月とか)はformat関数のエラーで引っかけられます。 参考になればいいのですが...

kuwagatanon
質問者

補足

ありがとうございます! 私が初心者のため情けないのですがもう少しお付き合いいただけませんでしょうか? >更新イベントやフォーカスイベントで値を代入すればいいと思います。 とは具体的にどこに何をしたら良いのでしょうか?