- ベストアンサー
クエリのデータ型が一致しない
- クエリ1とクエリ2を結合したクエリ3で「データ型が一致しません」と表示されます。
- クエリ1では[使用者氏名]のスペースを置換し、クエリ2では[氏名]のスペースを置換しました。
- クエリ3は[使用者氏名]と[氏名]が一致しているデータを抽出するためのクエリです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「データ型が一致しません」のエラーが発生するパターンのひとつに、『結合に使用している演算 フィールド(ご質問の件では式1が該当)の結果がエラーとなるレコードが含まれている』というのが あります。 クエリ1・クエリ2の式1にはReplace関数が使われていますが、Replace関数の第1引数にNullを 指定すると、エラーになります。 従って、恐らく「PC管理台帳」テーブルの「使用者名」か、「職員アカウント」テーブルの「氏名」の どちらか(或いは双方)が、空欄(Null)になったままのレコードがある可能性があります。 (なお、Trim関数は、第1引数がNullであってもエラーになりません) 上記推測が当たっていれば、 a)上記フィールドが空欄になっているレコードをなくす (その上で、今後のことを考えると値要求を「はい」に設定しておくことをお勧めします) b)式1の関数を下記のように変更する のどちらかの対応をされれば、ご質問のエラーは解消されるものと思います。 式1の変更で対応する場合は、それぞれ以下のようにしてみてください: (「[PC管理台帳.使用者名]」と「[職員アカウント.氏名]」は、それぞれ「[PC管理台帳].[使用者名]」と 「[職員アカウント].[氏名]」の誤記と判断して記述しています) クエリ1: Select Replace(Nz([PC管理台帳].[使用者氏名], ""), " ", "", 1, -1, 1) As 式1, PC管理台帳.新PC名, PC管理台帳.部署名, PC管理台帳.マシンベンダ名, PC管理台帳.マシンモデル From PC管理台帳; クエリ2: Select 職員アカウント.職員番号, Replace(Nz([職員アカウント].[氏名], ""), " ", "", 1, -1, 1) As 式1, 職員アカウント.パスワード, 職員アカウント.メールアドレス, From 職員アカウント; Nz関数は、第1引数がNull(=文字列扱い不可の空白)だった場合に、第2引数の値に置換する関数 です。第2引数に「""」(空文字=文字列扱い可の空白)を指定することで、Replace関数がエラーに なるのを回避しています。 Replace関数の一番最後の引数「1」は、半角/全角を区別させないためのものです。これにより、 スペースは全て削除されるため、Trim関数は不要になります。 (その前の「1, -1」は、それぞれ開始位置と置換する文字数の指定です。この辺りは、詳しくは ヘルプを確認して下さい)
お礼
丁寧な説明ありがとうございました。 よろしければ下記の質問もお願いします。 http://oshiete1.goo.ne.jp/qa3987087.html?ans_count_asc=20