ODBCドライバ経由でVBAのプログラムやAccessのリンクしたテーブルにレコードを追加したり更新したりすると、以下のエラーが表示される。

「Data too long for column 'XX' at row 1」エラー

詳細は以下。
スポンサードリンク


単純に考えれば、フィールドに定義されているデータ型よりも大きいデータを挿入/更新しようとしているためと思われるが、実際には、フィールドサイズよりも小さいデータを挿入したときでも発生する。
例えば、midiumtext型のフィールドにたった3文字の文字列を挿入しようとしたときなどがある。
原因は、機種依存文字列が挿入または更新しようとしたデータに含まれているため。
また、特定の漢字がひっかかる場合もある。
まだ完全な対処方法などがわかってない。

回避策(不完全)

  1. MySQLのODBCドライバの設定画面にある"Connect Options"タブの"Initial Statement"に「set names cp932」を設定する。

  2. VBAで指定する接続文字列に「STMT=set names cp932」を含める。
    VBAからADOを使用してAddNew、Updateした際にはこれでうまくいった。


接続文字列の例

conKB.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};DATABASE=kb;OPTION=3306;PWD=XXXX;" _
& "PORT=3306;SERVER=localhost;STMT=SET NAMES cp932;UID=root"


基本的に機種依存文字は使用しないのが常識。
完全な回避策等わかり次第内容を更新する。
スポンサードリンク

  

関連記事