teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

説明補足

2019/09/13 13:24

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  まず、
15
15
  コードは、テキストボックスのChangeイベントではなく、AfterUpdateイベントに移動してください。
16
- Changeイベントだと一文字入力しただけでも発生してしまいます。
16
+ Changeイベントだと一文字入力しり削除しただけでも発生してしまいます。一文字入力するたびに新規レコードが追加されたら困りますよね。また、日付選択カレンダーから日付を入力した場合は、Changeイベントは発生しません。これは仕様です。
17
17
 
18
18
  『T01-1_仕入登録』テーブルの「仕入日」フィールドのデータ型が日付/時刻型だとしたら、下記に変更してください。
19
19
 

4

修正

2019/09/13 13:24

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  End If
26
26
  ```
27
27
 
28
- `#` で囲むのはSQLでの文法です。
28
+ テキストとして `#` で囲むのはVBA上SQLを扱うときの文法です。
29
29
  DAOのレコードセットのフィールドに代入する場合は、日付/時刻型で代入すればOKです。
30
30
 
31
31
  ただし、非連結フォームの場合としても、一つのフィールドを入力しただけで、テーブルに追加するのは設計としてまずいと思います。すべてのフィールドを入力した後に、整合性をチェックしてテーブルに追加するというので非連結フォームのメリットを活かした設計と言えます。

3

コード変更

2019/09/13 09:34

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -19,7 +19,9 @@
19
19
 
20
20
  ```vba
21
21
  If IsDate(Me!Tx仕入日.Value) Then
22
+ rs.AddNew
22
- rs.Fields("仕入日").Value = Me!Tx仕入日.Value
23
+ rs.Fields("仕入日").Value = Me!Tx仕入日.Value
24
+ rs.UpDate
23
25
  End If
24
26
  ```
25
27
 

2

書式の改善

2019/09/13 09:33

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  End If
24
24
  ```
25
25
 
26
- # で囲むのはSQLでの文法です。
26
+ `#` で囲むのはSQLでの文法です。
27
27
  DAOのレコードセットのフィールドに代入する場合は、日付/時刻型で代入すればOKです。
28
28
 
29
29
  ただし、非連結フォームの場合としても、一つのフィールドを入力しただけで、テーブルに追加するのは設計としてまずいと思います。すべてのフィールドを入力した後に、整合性をチェックしてテーブルに追加するというので非連結フォームのメリットを活かした設計と言えます。

1

追記

2019/09/13 09:31

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -3,4 +3,29 @@
3
3
 
4
4
  それによって回答が異なりますので、質問に追記してください。
5
5
 
6
- とりあえずは、設定するイベントは Changeイベントではないことは確かです。
6
+ とりあえずは、設定するイベントは Changeイベントではないことは確かです。
7
+
8
+ 追記
9
+ ---
10
+ 上記の情報提供がないので、
11
+ 非連結フォームとして回答します。
12
+ 連結フォームなら、OpenRecordsetする必要はないので。
13
+
14
+ まず、
15
+ コードは、テキストボックスのChangeイベントではなく、AfterUpdateイベントに移動してください。
16
+ Changeイベントだと一文字入力しただけでも発生してしまいます。
17
+
18
+ 『T01-1_仕入登録』テーブルの「仕入日」フィールドのデータ型が日付/時刻型だとしたら、下記に変更してください。
19
+
20
+ ```vba
21
+ If IsDate(Me!Tx仕入日.Value) Then
22
+ rs.Fields("仕入日").Value = Me!Tx仕入日.Value
23
+ End If
24
+ ```
25
+
26
+ # で囲むのはSQLでの文法です。
27
+ DAOのレコードセットのフィールドに代入する場合は、日付/時刻型で代入すればOKです。
28
+
29
+ ただし、非連結フォームの場合としても、一つのフィールドを入力しただけで、テーブルに追加するのは設計としてまずいと思います。すべてのフィールドを入力した後に、整合性をチェックしてテーブルに追加するというので非連結フォームのメリットを活かした設計と言えます。
30
+
31
+ 失礼ながら、質問内容から、非連結フォームを設計できるスキルレベルではないと推測されます。