MySQL

MS AccessでMySQLを利用する際の注意点


MySQLの制限事項-Access2000から操作する際に発生する問題点

アプリケーションの移植作業もなかなか進みません。ひとつ何かをやると複数の問題点が絡み合って返ってきます。
数も多いので覚えきれません。さっそくここで覚え書きを残しておこうと思います。

  1. MyODBCドライバのオプションフラグ“Return matching rows”を有効にする。
  2. Accessから利用するすべてのMySQLテーブルに主キーを設定する。
  3. Accessから利用するすべてのMySQLテーブルにTIMESTAMP(14)またはTIMESTAMPカラムを定義する。

※TIMESTAMP型はINSERT、UPDATE操作時に自動的に現在の時刻が表示されるカラムです。データの更新日として使っているカラムがなければ”[テーブル名]_last_update”等のカラムを新しく作成する必要があります。

  1. 浮動小数点型はDoubleだけ使用する(単精度浮動小数点型は使用しない事)
  2. BIGINT型を使用する場合、>MyODBCドライバのオプションフラグ“Change BIGINT columns to INT”を有効にする。
  3. ODBCの設定を変更した際は、テーブルリンクをいったん削除し、リンクを張り直さないと設定が反映されない事がある
  4. ODBCの設定を変更した際は、Accessをいったん閉じて開き直す必要がある場合がある
  5. Accessのフォームから操作する場合、TIMESTAMP型のカラムに対して規定値でNow()を設定する必要がある場合がある
  6. AccessがMySQLのDATE型を正しく処理できない場合がある。その場合DATETIME型に変更する。
  7. AccessからMySQLへテーブルを移行する際、日付型のカラムが原因となることがある。回避する為には、MySQL側の日付型カラムはDATETIME型に、Access側の日付型カラムは書式を日付(標準)にする必要がある。
  8. AccessからMySQLへテーブルを移行する時に、ファイルメニューのエクスポートを使用すると、問題発生時にどのカラムに問題があるのか把握できない場合がある。問題を明らかにするためには、MySQLで事前にテーブル構造を準備しておき、Accessのテーブルから追加クエリを使用してデータを移してやればよい。ひとカラムずつデータが移行できているのか確認することで問題が明らかにすることが出来る。
  9. MySQL側にBIGINT型のカラムがあるテーブルをリンクテーブルにした場合、すべてのカラムに#Deleted#と表示されることがある。その際はBIGINT型をINT型にすることで表示されるようになる。MySQLのINT型とAccessのLong型(長整数型)がちょうど同じ範囲の型なので整数型は迷わずINT型を使おう。範囲が広いからと言ってBIGINTを使う必要性はあまりない。なんとかしようとするとドツボにはまります。
  10. MySQLの日付型のデータの範囲は1000-01-01から9999-12-31まで。Accessは1000年以前が入力できる(例.153年1月1日)。データ移行の際にAccess側に1000年未満のデータがある場合、オーバーフローが発生する。