みたにの雑記帳

ソフトウェア開発関係、ゲームなど興味のあるものを徒然と。自分の勉強も兼ねて。

【Access】数値と文字列が混ざったフィールドの貼り付け時の貼り付けエラー

ExcelからAccessにデータをコピーする際に問題が発生したためメモ。

エラー内容

貼り付け時に以下のエラーメッセージが表示される

'(テーブル名)' フィールドに値を入力してください。
レコードを貼り付けることができないことを示すエラー メッセージを表示しないようにしますか?
貼り付けることができなかったレコードは、'貼り付けエラー' という名前の新しいテーブルに挿入されます。

貼り付けエラーテーブルが作成される

以下の各テーブルをデザインビューで開いた際、エラーが出たフィールドのデータ型は以下となっている。

  • 貼り付け先テーブル:短いテキスト
  • 貼り付けエラーテーブル:数値型

エラーが発生したフィールドの型が短いテキストから数値型に勝手に置き換わっている。

原因

数値と文字列の入り混じった列をAccessにコピーした場合、Accessが入力データの多数決を元に型推論を行うため。 「このフィールドにコピーしようとしているデータは数値型である」と型推論したフィールドに、文字列型のデータを入れようとしているためエラーとなった。

以下は入力データと型推論結果の例。

  • 0 1 2 a bの場合、数値型
  • 0 1 a b cの場合、短いテキスト

対策

貼り付け元のExcelにて、対象列のデータをすべて選択し、右クリックで「セルの書式設定」→「表示形式」タブで「文字列」を選択。 これで文字列型としてAccessにコピーされる。

以下に記事を移行しました。 https://algorithm.joho.info/access/paste-error-mixed-string/