Accessの追加クエリで「型変換エラー」が出る原因と対処法

Access(アクセス)で追加クエリを実行したとき、「追加クエリですべてのレコードを追加できません」というエラーが出て困った経験はありませんか?
このメッセージの中でも特に多いのが「型変換エラー」です。
この記事では、型変換エラーが発生する原因と、それぞれの具体的な対処法を解説します。


スポンサーリンク

エラーメッセージの全文

追加クエリを実行すると、以下のようなダイアログが表示されます(Access 2016以降共通)。

追加クエリですべてのレコードを追加できません。
型変換エラーのため、〇個のフィールドをNullに設定しました。
〇件のレコードでキー違反、〇件のレコードでロック違反、
〇件のレコードで入力規則違反が発生したため、レコードを追加できませんでした。

このダイアログには4種類のエラーが表示されますが、本記事では「型変換エラー」に絞って解説します。

[はい] を押すと何が起きるか
型変換エラーが発生したフィールドは Null(空白) として追加されます(Microsoft公式サポートより)。
データが欠落してしまうため、Null のまま追加されて困る場合は [いいえ] を選んでデザインビューで修正してください。


型変換エラーとは

型変換エラーは、追加元フィールドと追加先フィールドのデータ型が一致していないときに発生します。

Microsoft公式サポートでは以下のように説明されています(Common errors when you run an append queryより)。

Type conversion failures — You may be trying to append data of one type into a field of another type. For example, appending text into a field whose data type is set to Number will cause the error to appear.
(追加元のデータ型と追加先フィールドの型が異なる場合に発生する。たとえば数値型のフィールドにテキストを追加しようとするとこのエラーが表示される)


型変換エラーの主な原因

原因1:データ型の不一致(最も多い原因)

追加元フィールドと追加先フィールドのデータ型が異なっています。

よくあるデータ型のミスマッチ例を以下にまとめます。

追加元のデータ追加先フィールドの型結果
テキスト(「不明」など)数値型型変換エラー
テキスト(「2024/01/01」)日付/時刻型(US形式以外)型変換エラー
数値(123)テキスト型通常は変換成功
空白(Null)Yes/No型型変換エラー

対処法:

  1. 追加先テーブルをデザインビューで開く
  2. 各フィールドの「データ型」を確認する
  3. 追加元クエリの対応するフィールドのデータ型と一致しているか確認する
  4. 一致していない場合はどちらかのデータ型を修正する

原因2:数値フィールドに文字列が混入している

数値型フィールドに「Unknown」「N/A」「―(ダッシュ)」などの文字列が入っているケースです。
Excelからインポートしたデータや、手入力のデータに多く見られます。

対処法:

  • いったんすべてのフィールドを「テキスト型」のテーブルにインポートする
  • その後、Val() 関数や CDbl() 関数で数値に変換してから追加クエリを実行する

変換関数の使用例:

Val([数値フィールド])      ' テキストを数値に変換(変換できない文字は0)
CDbl([数値フィールド])     ' Double型に変換
CInt([数値フィールド])     ' Integer型に変換
CDate([日付フィールド])    ' 日付型に変換
CStr([数値フィールド])     ' 数値をテキスト型に変換

原因3:日付のフォーマットが合っていない

Access は日付を US 形式(月/日/年)で処理します。
「2024/01/15」のような年/月/日形式や「15-Jan-2024」のような形式は、そのままでは正常に取り込めないことがあります。

対処法:

  • テキスト型フィールドにいったん受け取り、DateSerial() 関数や Left() / Mid() / Right() で日付を再構築する

DateSerial 使用例(「年/月/日」形式を日付型に変換する場合):

DateSerial(Left([日付テキスト],4), Mid([日付テキスト],6,2), Right([日付テキスト],2))

原因4:フィールドサイズの超過

数値型フィールドの「フィールドサイズ」(整数型・長整数型・単精度型など)よりも大きな数値を追加しようとしているケースです。

対処法:

  • 追加先テーブルのデザインビューでフィールドサイズを確認する
  • 追加元データの最大値が収まるサイズに変更する(例:整数型 → 長整数型)

原因5:空文字列の許可設定が異なる

テキスト型フィールドの「空文字列の許可」設定が追加元と追加先で異なる場合にも型変換エラーが発生することがあります。

対処法:

  1. 追加先テーブルをデザインビューで開く
  2. 対象フィールドを選択し、下段のプロパティで「空文字列の許可」を確認する
  3. 追加元テーブルと設定を合わせる(どちらも「はい」にするか「いいえ」にする)

原因を特定する手順

型変換エラーの原因が複数ある場合は、以下の手順で切り分けると効率的です。

  1. エラーテーブルを確認する
    ダイアログで [はい] をクリックして追加を実行すると、追加エラー という名前のテーブルが自動作成されることがあります。
    このテーブルを開くと、エラーが発生したレコードとその理由が記録されています。
  2. 選択クエリで確認する
    追加クエリをいったん選択クエリに切り替えて(「クエリデザイン」→「選択」)、データシートビューで実際のデータを確認します。
    数値フィールドに文字列が含まれていないか、日付フォーマットが正しいかを目視で確認できます。
  3. フィールドを1つずつ絞り込む
    追加するフィールドを1つだけにしたクエリを作成してテストし、エラーが出るフィールドを特定します。

型変換エラー以外のエラーも出ている場合

同じダイアログに「キー違反」「ロック違反」「入力規則違反」が同時に表示されることがあります。
それぞれの意味と確認先は以下のとおりです(Microsoft公式サポートより)。

エラーの種類主な原因[はい] を押した結果
型変換エラーデータ型の不一致該当フィールドがNullになって追加される
キー違反主キーの値が重複しているレコードが追加されない
ロック違反別のユーザーがテーブルを開いているレコードが追加されない
入力規則違反入力規則・必須設定に違反しているレコードが追加されない

キー違反・入力規則違反は [はい] を押しても追加されないため、必ず [いいえ] を選んで設計を見直してください。


まとめ

Accessの追加クエリで型変換エラーが発生する主な原因は、追加元と追加先のデータ型が一致していないことです。
まずは追加先テーブルをデザインビューで開き、各フィールドのデータ型とサイズを確認するのが最初のステップです。

データ型が合っているのにエラーが出る場合は、数値フィールド内の文字列混入や日付フォーマットの問題を疑い、Val()CDate() などの変換関数を使って対処しましょう。


参考情報源:

コメント

タイトルとURLをコピーしました