No.5ベストアンサー
- 回答日時:
s_husky です。
<年月を固定して日付のみを分離入力するには?>という質問の答えです。
1、フォームに非連結で[年月]を配置します。
2、フォームに非連結で[年月日入力欄]を配置します。
3、フォームに連結で[年月日]を配置します。<非表示で可>
・[年月日入力欄]の初期値が[年月]であれば質問者の要求を満たします。
・[年月日入力欄]で日付へカーソルが移動すれば質問者の要求を満たします。
・また、既存レコードと新規レコードで各コントロールの整合性を取る必要があります。
この場合、フォームのコードは次のように書けばよいと思います。
Option Compare Database
Option Explicit
Private Sub Form_Current()
If Me.NewRecord Then
Me.年月日入力欄 = Me.年月
Else
Me.年月日入力欄 = Me.年月日
End If
End Sub
Private Sub 年月日入力欄_AfterUpdate()
Me.年月日 = Me.年月日入力欄
End Sub
Private Sub 年月日入力欄_GotFocus()
If Len(Me.年月日入力欄 & "") = 0 Then
Me.年月日入力欄 = Me.年月
SendKeys "{F2}", True
ElseIf Len(Me.年月日入力欄 & "") = 8 Then
SendKeys "{F2}", True
End If
End Sub
No.6
- 回答日時:
>入力のところだけ分けるということはできないですか
フォーム上で日・時間を別々に入力したいという事で
簡単に出来ます。
フォーム上にテキストボックスを3つ配置します。例えば年月を表示するコントロールを年月、日をDay1という名前とします。他にフォーム上に年月日というテーブルの年月日のフィールドをコントロールソースとするテキストボックスがあるとします。
年月のプロパティで書式をyyyy/mmとしてデータのコントロールソースに
=Format(Date(),"yyyy/mm")
とします。これで年月には今月の2006/03が自動で表示されるようになります。
日のDay1のプロパティの更新後処理のイベントにコードビルダで
Private Sub Day1_AfterUpdate()
Me!年月日 = CDate(Me!年月 & "/" & Day1)
End Sub
のようにします。
これで日にちにあたるDay1に数字を入力しEnterキーで確定させれば年月日に日付を代入入力できます。
間違った日付(例えば2006/03/35になるような)を入力すると型の不一致のエラーになります。エラートラップが必要になりますが入力する日にちを間違えないようにすればこれだけで入力できます。
開始時間・終了時間は従来通り(年月日と一緒にではなく別々のフィールドで保存)のフィールドでフォーム上で入力すれば良いと思います。
No.4
- 回答日時:
s_husky です。
しりきれトンボでした。
*******************
入力フォームのコード
*******************
Option Compare Database
Option Explicit
Private Sub 月_AfterUpdate()
年月日更新 2
End Sub
Private Sub 日_AfterUpdate()
年月日更新 3
End Sub
Private Sub 年_AfterUpdate()
年月日更新 1
End Sub
Public Sub 年月日更新(ByVal I As Integer)
On Error GoTo Err_年月日更新
Me.年月日 = CDate(Me.年 & "/" & Me.月 & "/" & Me.日)
Me.Refresh
Exit_年月日更新:
Exit Sub
Err_年月日更新:
MsgBox "不正な年月日が入力されました"
If I = 1 Then
Me.年.SetFocus
ElseIf I = 2 Then
Me.月.SetFocus
Else
Me.日.SetFocus
End If
SendKeys "{UP}", False
SendKeys "{ESC}", False
Resume Exit_年月日更新
End Sub
※ただし、補足を読めば、個別入力の必要は全くなさそうですね!
※単に、「入力の初期設定をしたいが?」という質問ですね!
※あーっ!シンド!というところです。
No.3
- 回答日時:
<出来るならば考え直すべきです!>
※思ったよりコードが煩雑です。
※思ったより経験が必要です。
という事を踏まえて...
1、入力フォームに非連結タイプのテキストボックスを配置します。
・名前は<年><月><日>と仮定します。
2、フォームのロード時、新規レコード発生時の<年><月><日>の初期値設定が必要です。
3、<年>だけ更新されても<年月日>が更新されるように<年月日更新関数>を用意します。
4、<年月日>更新時エラーが発生した場合、<年><月><日>のどれかにカーソルを戻す仕掛けをします。
5、<年月日>を更新してもフォームに反映されないケースもあるというAccess固有の不具合対策も行います。
以上を完璧に行う限りで分離が可能です。
*******************
[年]のプロパティ
*******************
書式=0000
規定値==Format([年月日],"yyyy")
*******************
[月]のプロパティ
*******************
書式=00
規定値==Format([年月日],"mm")
*******************
[日]のプロパティ
*******************
書式=00
規定値==Format([年月日],"dd")
*******************
[熱月日]のプロパティ
*******************
コントロールソース=年月日
書式=yyyy/mm/dd
規定値=Now()
*******************
入力フォームのコード
*******************
Option Compare Database
Option Explicit
Private Sub 月_AfterUpdate()
年月日更新 2
End Sub
ご返答ありがとうございました(^^)
難しそうなのでじっくり理解しながらしてみようと思います。また質問することがあると思いますので、その時はよろしくお願いします<(_ _)>
No.2
- 回答日時:
>フィールド名「年月日」とされていて「○○○○/○○/○○」と入力していたものを「年」「月」「日」と別々に入力するにはどのようにしたらよいのでしょうか
テーブルのフィールドの変更ということで良いのでしょうか?
mdbを開きデータベースウィンドウのテーブルからその変更したいテーブルを選び右クリックでデザインビューをクリックしデザインビューで開きます。
フィールドに行を挿入するか一番したに新たに追加しフィールド名を年と月と日を順に作ります。データ型は日付で書式に年はyyyy、月はmm、日はddとすれば別々に入力できる様になります。または年・月・日のデータ型を長整数型にしても入力出来ますが入力規則等で日付に該当するような縛りを入れておかないと入力ミスの元になりかねません。
フォームで入力を行っているのであればフォームに年・月・日の各コントロールを新たに配置すれば入力できます。
各フィールドが出来たら年月日のフィールドを削除しても良いですが年・月・日の各フィールドから年月日を作成する事もできます。
用途に合わせての事だと思いますが年・月・日を別々に保存して管理するより通常は年月日で管理する方が多いと思います。
この回答への補足
ご回答ありがとうございます。
年月日を分けて入力したいというのが、スケジュールの管理で利用しており、今までは社員コード、年月日、仕事内容、開始時間、終了時間をテーブルですべて手入力していたものを1人ごとに
・社員コード
・仕事内容
・○○○○年○○月
まで確定させて、あとは日にちと時間を入力するだけにするように変更したいのです。
説明が足りなくてさらにわかりにくくてすみません・・・(>_<、)入力のところだけ分けるということはできないですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Access(アクセス) Accessのデータ型の日付/時刻型について 2 2023/02/14 07:40
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- 薬剤師・登録販売者・MR バイト先に正社員としての雇ってあげると言われています 5 2023/07/28 16:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
このオブジェクトに値を代入す...
-
Access2007 textboxに入力でき...
-
Access2007、フォームのテキス...
-
sqlldrの使用方法について
-
ファイルメーカで経過月数を出...
-
OUTLOOK予定表の表示項目追加は...
-
Excelで入力したデータを自動的...
-
Access2000VBAで全角数字を入力...
-
Accessのふりがな自動入力
-
Accessで主キーの最終番号を取...
-
カレンダーフォームの日付をユ...
-
入力規則違反-任意のエラーメ...
-
Accessで小数の入力について
-
Access(office)のマクロの「値...
-
日付のテキストボックスに(例...
-
Accessのパラメータクエリに入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
ACCESS2000にて「うるう年」の...
-
Access(office)のマクロの「値...
-
入力規則違反-任意のエラーメ...
-
エクセル 自動入力
-
ACCESS 時間の入力方法
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
Access2007 textboxに入力でき...
-
ユーザーフォームで数字にカン...
-
sqlldrの使用方法について
-
アクセス コンボボックスのリ...
-
Access2007、フォームのテキス...
-
Accessで西暦の年だけ表示したい
-
EXCELのユーザーフォームで入力...
-
ファイルメーカー 一ヵ月後の...
おすすめ情報