Microsoft Access 掲示板

追加クエリですべてのレコードを追加できません

2 コメント
views
4 フォロー

お世話になっております。

住所の建物名を別フィールドに分割する機能を作成しています。

流れとしては
1.Q_住所1分割(追加クエリ)でスペースの位置を基準に住所を前半・後半に分割し、T_住所1分割(テーブル)に書き込む
2.Q_分割後住所更新(更新クエリ)でT_出力の住所1(フィールド)を住所1前半に、住所2(フィールド)を住所1後半+元々あった住所2に更新する
3.T_住所1分割のレコードを削除する

本題はここからです。
Q_住所1分割を実行しようとした時、住所1に値がないレコードの分だけ「型変換エラーのため、〇個のフィールドをNullに設定しました。」と警告文が出てしまいます。
無視して実行しても想定通りの結果が得られるので実害はないのですが、警告が出ないようにするにはどうすればよいでしょうか?また、この警告が発せられるということはテーブルやクエリの作りがよくないのでしょうか?


Q_住所1分割

INSERT INTO T_住所1分割 ( ID1, ID2, 住所1前半, 住所1後半 )
SELECT T_出力.ID1, T_出力.ID2, IIf(InStr([住所1]," ")=0,[住所1],Left([住所1],InStr([住所1]," ")-1)) AS 住所1前半, IIf(InStr([住所1]," ")=0,"",Mid([住所1],InStr([住所1]," ")+1)) AS 住所1後半
FROM T_出力;

T_住所1分割

ID1(数値型)ID2(数値型)住所1前半(短いテキスト型)住所1後半(短いテキスト型)

Q_分割後住所更新

UPDATE T_出力 INNER JOIN T_住所1分割 ON T_出力.ID1 = T_住所1分割.ID1 SET T_出力.住所1 = [住所1前半], T_出力.住所2 = IIf(IsNull([住所2]),[住所1後半],[住所1後半] & " " & [住所2]);
驚天動地!前任者失踪丸
作成: 2024/04/10 (水) 09:13:01
通報 ...
1
hiroton 2024/04/10 (水) 10:16:28 0799a@f966d

ぱっと見ですが、

「T_住所1分割」の「住所1前半」「住所1後半」フィールドの値要求プロパティと空文字の許可プロパティはどうなっていますか?
これに対して、

IIf(InStr([住所1]," ")=0,[住所1],Left([住所1],InStr([住所1]," ")-1)) AS 住所1前半
IIf(InStr([住所1]," ")=0,"",Mid([住所1],InStr([住所1]," ")+1)) AS 住所1後半

これらの計算結果はどのような結果が取られますか?

各プロパティの設定によって、そのフィールドに「Nullは使えない」「空文字("")は使えない」のような制限がかかります。それらのフィールドに使えない値を入れようとすると問題の警告が表示されます

2
驚天動地!前任者失踪丸 2024/04/10 (水) 16:34:21 23e8e@44ebd >> 1

回答ありがとうございます、自己解決できました。
T_出力の各フィールドのNullをNzで""にしたらクエリを実行しても警告がでなくなりました。