• ベストアンサー

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
質問者

補足

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

関連するQ&A

  • 日付を使った計算式を教えてください

    [環境紹介] WINDOWS10、ACCESS2007(令和表示はテンプレートを使用して表示中) 「令和表示の式です」 =DLookUp("和暦","T_和暦マスタ","開始年月日<= #" & [txt日付] & "#and 終了年月日>=#" & [txt日付] & "#") [やりたいこと] 過去や未来の対象日や日数を下記のやり方で実施しています。「曜日」と「和暦」の表示方法(式)が分からずアドバイスをお願いできませんでしょうか。今の知識レベルで質問内容に対する可能可否の判断ができませんので、無理難題の質問内容でしたらご理解とご了承を賜りたいと思います。 [やっていること] 事前に設計しないでテーマを増やしたこともあり、テキストボックスの名前に整合性がありません。将来新たなデータベースを作る時(自分で納得できる知識が習得・・・)の課題と認識しております。 ■起点日→幾日後の月日(起点日から後日の西暦日を表示) テキストボックス名:西暦2「カレンダー入力」 テキストボックス名:日数2 手打ち テキストボックス名:対象2 コントロールソース「 =[西暦]+[日数] 」 ■起点日→対象日迄の日数(起点日から後日の日数を表示) テキストボックス名:開始「カレンダー入力」 テキストボックス名:終了 手打ち テキストボックス名:日数 コントロールソース「 =[着地日]-[開始日] 」 ■起点日→幾日前の月日(起点日から前日の日数を表示) テキストボックス名:西暦55「カレンダー入力」 テキストボックス名:日数55 手打ち テキストボックス名:対象55 コントロールソース「 =[西暦1]+[日数1] 」 [やってみたこと] ■起点日→幾日前の月日(起点日から前日の日数を表示)を例にとりあえず曜日でのチャレンジです。 テキストボックス名:西暦1「カレンダー入力」 テキストボックス名:日数1 手打ち テキストボックス名:対象1 コントロールソース「=[西暦1]+[日数1] テキストボックス名:曜日1 コントロールソース「 =WeekdayName(Weekday(対象1)) 」 結果はエラーでした。 以上ですが、宜しくお願いします。

  • 日付の計算式についてアドバイスをお願いします

    レコードソース無しのフォームにテキストボックスを三個作って、西暦月日「任意」を入力し日数「数値」を入力することで、後日「月日と曜日」と遡っての過去「月日と曜日」を知りたいと思っています。正直、計算フォーム「よろず計算用」として既に使っているフォーム「エリアに余裕」への追加になります。 I,フォーム名:計算フォーム II,テキストボックス 1,テキストボックス名:西暦 = 西暦入力(英数半角) 2,テキストボックス名:日数 = 日数入力(英数半角)  ・日 数:1日を1とする  ・後 日:正の整数を入力  ・遡り日:負の整数を入力(-数値) 3,テキストボックス名:対象日= 対象日表示 以上ですが、宜しくお願いします。

  • EXCEL・VBAフォームの日付(表示形式を変更したい)

    VBA初心者です。フォームの中にテキストボックスを作成しています。規定値にあるシートのセルを表示しています。このセルは日付(西暦4桁)で入力しているのですがテキストボックスでは(西暦2桁)で表示されてしまいます。 FORMATというのを使用すればよいようなのですがどうつかえばいいのかわからないのです。 プロパティでテキストボックスのコントロールソースにそのセルを指定しています。 どのように記述すればよいでしょうか。 詳しい方教えていただけますでしょうか。 よろしくお願いいたします。

  • Word2003 日付の書式書式ggge年M月について教えてください。

    日付の書式について思った通りの結果にならず、困っています。 あるテキストを使用して、フォームの作成をしています。 テキストボックスフォームで、日付の書式が異なる「日付」を2つ作る指示があります。 指示通りに作成し、作成後に入力をすると思い通りの結果が得られません。 下記に指示と結果を記します。 <テキストの指示> ※テキストボックスフォームフィールドを2箇所設定、各々のオプションで下記の設定を行うものです。 (1)種類「日付」、日付の書式「ggge年M月d日(aaa)」  ヘルプの追加でステータスバーに"半角で西暦下2桁/月/日を入力"と表示させる。 (2)種類「日付」、日付の書式「ggge年M月」  ヘルプの追加でステータスバーに"半角で西暦下2桁/月を入力"と表示させる。 <入力結果> (1)の箇所に"09/06/27"と入力すると、"平成21年6月27日"と思い通りの結果が表示されます。 (2)の箇所に"09/06"と入力すると、"平成21年9月"と表示されてしまいます。 (2)の箇所に"2009/06"と入力すると、"平成21年6月"と思い通りの結果が得られます。 "ggge年"は、西暦4桁で入力されるべきものなのでしょうか? テキストにあるヘルプの追加で表示させる"半角で西暦下2桁/月を入力"は正しいのでしょうか? どなたかご存知の方がいらっしゃいましたら教えてください。

  • 日付の入力制御

    使っている環境はVB6.0です。 テキストボックスで例えば、「2008816」のように入力すると西暦・月・日にちの順で「20080816」のように「西暦」や「月」や「日にち」に必要があれば「0」を挟んで表示できるように入力制御をかけたいのですが何か良い方法はないでしょうか? 西暦も「08」と打つと「2008」となるようにしたいです。

  • 年齢表示がマイナス(-年齢)になるのを改善したい

    [アプリケーション] アプリケーション:Office2007Professonal [困っていること] 非ソース単票フォームのテキスト窓を2列作成「和暦入力⇒西暦表記」「西暦入力⇒和暦表記」し、更に年齢を表示させています。しかし、令和になってから年齢表示が「 "歳"表記が(-○○歳)」となってしまいました。 [やりたいこと] 令和年号で "歳"表記が(-○○歳)になるのを(〇〇歳)表記にしたいと思っています。尚、このフォームを作成するにあたり、このサイトにてご指導いただきました(感謝・・・・。)。ご面倒をおかけしますが、重ねてお願いいたします。現在、テーブルは年単位で月の管理はしていませんので、とりあえず、このまま年単位で続けたいと思います。 [テキストボックスの式] 西暦入力から和暦を表示させる設定の内容になります。テキストボックの内容とテキストボックスの流れになります。 フォーム名:和暦西暦確認フォームII「非ソース単票フォーム」 コンボボックス名:c1 値集合ソース:SELECT DISTINCT 西暦年号表クエリ.西暦, 西暦年号表クエリ.年号, 西暦年号表クエリ.年号年 FROM 西暦年号表クエリ; ↓ テキストボックス名:テキスト6 コントロールソース:=c1.Column(1) ↓ テキストボックス名:テキスト9 コントロールソース:=c1.Column(2) ↓ テキストボックス名:テキスト14 コントロールソース:=[y]-[c1] & "歳" 以上ですが、よろしくおねがいします。

  • 年号表示を西暦と和暦のハイブリットにした

    フォーム上にテキストボックスを配して、西暦、和暦、曜日などを個別のテキストボックスで表示させています。これをひとつのテキストボックス又はふたつのテキストボックスで表示させたいと思っています。尚、テキストボックスは非連携「当日表示のみ」を前提とします。 [やっていること] 1,西暦表示は テキストボックスのプロパティーで「コントロールソース」にて「式ビルダ」を起動させ、「関数」で「組み込み関数」を選び「日付/時刻」の「=Date()」を選択。 2,和暦表示は 上記「1」の操作後、プロパティーの書式タブの「書式」gggee\年mm\月dd\日をコピー&ペーストしています。 3,曜日は テキストボックスのプロパティーで「コントロールソース」で「式ビルダ」を起動させ、関数」で「組み込み関数」を選び「日付/時刻」の「=Date()」を選択。エディターで「=WeekdayName(Weekday(Date()))」を作成し「貼り付け」を選択する。 [やりたいこと(可能ならIIが希望)] I,1(西暦)と2(和暦)をひとつのテキストボックスで表示させたい。例えば、テキストボックスをクリックする度に表示が変えられる。曜日は別のテキストボックスで表示させる。   II,1(西暦)と2(和暦)と3(曜日)をひとつのテキストボックスで表示させたい。例えば、テキストボックスをクリックする度に表示がループ式に変えられる。 以上ですが、ご指導宜しくお願いします。

  • accessのtextboxの日付nul時書式設定

    accessの日付を入力するテキストボックスの書式を使って 未入力の時は、「____年__月__日」と表示させ、 入力時にyyyy年mm月dd日 という書式を適用させようと思っています microsoftのヘルプには 「数値フィールドまたは通貨フィールドの書式を設定する」 正、負、ゼロ (0)、Null (未定義) の 4 種類の数値に書式を指定できる」 とあるので、それにならって 「yyyy\年mm\月dd\日;;;"____年__月__日"」 としました。 しかし、これで未入力のときは確かに 「____年__月__日」と表示されるのですが、 テキストボックスがフォーカスに移動すると、 「____年__月__日」という値がのこってしまい消えません (deleteやbackspaseで削除しなければいけません) 「;;;"____年__月__日"」 や 「0;;;"____年__月__日"」 の場合はテキストボックスにフォーカスが移動するとともに ちゃんと値がきえるのですが、日付の場合はnullの書式設定はできないのでしょうか? この現象のために、いちいちvbaで対応しなければならず不便に思っています。

  • アクセスのフォーム上のテキストボックスについて

    アクセスのフォーム上のテキストボックスについて フォーム上のテキストボックスに直接数字を入力しようとしています。ただ、このテキストボックスのコントロールソースはフォームのレコードソースと違うものです。 この状況でテキストボックスに数値を直接入力しようとすると、『コントロールソースに連結しているので、編集できません。』と表示され、入力出来ません。 どうすれば、解決できるのかご存知の方、教えて下さい。宜しくお願いします。

  • ACCESSのフォームに本日の日付を西暦表示したいです。

    ACCESSのフォームに本日の日付を西暦表示したいです。たとえば・・・ 平成16年5月20日  という感じで・・・ どなたか教えてください・ テキストボックスを使っています。

専門家に質問してみよう