システム開発ブログ

【Access】TransferSpreadsheetにおけるデータ型

牧野

牧野 (2011年12月12日 14:47)
システムソリューション事業部 / ビジネスソリューション課 / Access

みなさん、こんにちは。
システムソリューション事業部 ビジネスソリューション課の牧野です。

AccessにはExcelのデータを取り込むために、
「TransferSpreadsheet」というメソッドが用意されています。

非常に便利なメソッドではあるのですが、
便利であるが故、例外に弱いところがあります。

データベースであるAccessはデータ型が存在し、
Excelにもデータ型が存在しています。

そのため、普通に考えてしまうと、
Excelで指定したデータ型でAccessに取り込んでくれるだろうと考えてしまいます。

しかし、実際はそうは行かず、
Accessは取り込むデータのデータ型をあらためて検証し、
取込を行ってくれるのです。

CSV形式であればデータ型を指定できますが、
Excel形式では、ユーザーがデータ型を指定することはできません。

実際に取り込まれたデータ型の検証には、通常は1行目から8行目までのデータを参照し、
判定されます。

この仕様により、列に例外データが含まれているExcelを取り込もうとすると、
エラーになってしまいます。

詳しくはリンク先を参照下さい。
Access にて 複数のデータ型が混在する Excel のデータ (XLS 形式 または XLSX形式) をインポートするときに、エラー メッセージ "データ型変換エラー" が表示される場合がある

この現象を避けるためには、幾つか手順を踏みます。

まず、取り込むデータは取込先のテーブルに直接取り込まず、
一旦一時テーブルを作成して取り込むようにすること。

次に、取り込むデータは型の判定をさせず、全て文字型で取り込むこと。
そのためには、先頭8行のデータ型を統一しなればよいので、
あえて一時テーブルには項目名の行もデータとして取り込んでしまいます。

最後に、上記で取り込んだ項目名データ、及び例外データの削除等の整形を行い、
取込先テーブルへ転送することで、正しく取り込むことができます。

Access側もExcel側もしっかり設定を行っているのに取り込めない!
という時は、上記例をチェックしてみてください。

システムのトラブル解決を承ります。すぐにシステムリフォームを体験できますシステム診断・システムリフォームのお申し込みはこちらから。

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

ページのトップ