MS Access 秀丸

AccessからMySQLを操作

投稿日:2009年5月21日 更新日:

WordPressに書いた記事は、MySQLに格納されている。

格納された大量の記事をまとめて修正したいときは、いちいち管理画面から修正するのは疲れる。
今までは、PhpMyAdminでSQLのUPDATEを使うか、またはいったんテキストファイルでローカル環境にダウンロードしてから秀丸で置き換え機能でやってきた。

でも、フィールド数が多かったり、一つのフィールドに格納されている文字量が多かったりすると、どちらのやり方をとっても、テキストボックスをクリックしてスクロールしないと見えなかったり、あるいはウィンドウの右端で折り返されたりして、なかなか効率が悪い。

こんなとき、ローカルに強いAccessを使えたら便利なのに。
フォームが簡単に作れるから、修正対象となるフィールドだけを表示できるし、文字量の多いフィールドは、テキストボックスの書式を変更してフォントサイズを小さくすればよい。

で、今日はXAIOのMYSQL+ACCESS+ODBCドライバと、XAMPPのMySQL+ACCESS+ODBCドライバで、それぞれやってみた。

結論から言うと、最初は、文字化けしたり、レコードの読み込みはできても更新できなかったり、ODBC接続テストでエラーが出たりして、なかなかうまくいかなかったけど、最後にはできた。

  • xaio(MySQL 4.0.20)+ Access2007 + MysqlODBC(v3.51) —NG
  • xaio(MySQL 4.0.20)+ Access2007 + MysqlODBC(v5.1) —NG
  • xampp(v1.4,MYSQL(v4.0.18)) + Access2007 + MysqlODBC(v3.51) —NG
  • xampp(v1.4,MYSQL(v4.0.18)) + Access2007 + MysqlODBC(v5.1) —NG
  • xampplite(v1.7.1,MYSQL(v5.1.33)) + Access2007 + MysqlODBC(v5.1) —OK

一番最後の組み合わせで、やっと文字化けもエラーも出なくなった。ACCESS2003でもテストしてみたけどそれもうまくいった。
xamppではなくてxamppliteを使ったのは別に意味なし。パッケージをダウンロードするのに時間がかかるようだったからサイズが小さいのにしただけ。

学んだこと:
・それぞれのソフトは、面倒くさがらずに新しいバージョンをダウンロードしてきてから使うこと。特にxaioなんてのは2006年版だった・・・。
・うまくいかない理由はACCESSではなくて、MySQLとそのODBCドライバにあった。
・テストするときは、事前にxaio_start.exeでサーバを作っておかなくてはいけない。
・MySQLのODBCは5.1になってから文字コードを自動変換してくれるようになったらしい。


今日もまた、こんなことに仕事場で半日使ってしまった。
けど、最後にはうまくいってほんと良かった。何度も言うけど。

あとは、この「知恵」を使った仕事が今後来るかどうかだなあ・・・それが問題だったり。

-MS Access, 秀丸

執筆者:

関連記事

no image

Accessの複雑な処理のレポート帳票で1ページのみ出力されるはずが2ページ目になぜかページヘッダーが出るトラブルに見舞われ

レポートのデザインビューでいうと上から、レポートヘッダー、ページヘッダー、グループヘッダー、詳細、グループフッター、ページフッター、レポートフッター・・・というような、結構細かいレポートを作っている。 …

no image

SqlServerにAccessでいうオートナンバー型をつける

テストデータを作るために、Accessで2万件ほどのデータを用意し、別途追加クエリを作って、ODBC接続したSqlServerに追加しようとしたところ、「型変換エラーがどうのこうので追加出来ない」との …

no image

VBAで英字混じりの引数から数字のみを取り出す関数

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。 VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。 カスタム関数を作るにも、これはという情報がググ …

no image

AccessやExcelで作ったハイパーリンクではChromeブラウザ上のGmailの受信トレイを検索できんかった・・・がShellならできた

Accessのフォームにつくったボタンをクリックしたら、ハイパーリンクに変数がセットされ、その変数でGmailの受信トレイを検索する・・・・といった仕組みを作りたかった。 Private Sub cm …

no image

Accessで DoCmd.RunSQL を CurrentDb.Executeにしたら、1秒高速化した

処理が遅いので速くして欲しいとの要望があったので、コードを調査。 DoCmd.RunSQL を CurrentDb.Execute に置き換えると非同期で実行されるとの情報を得たので、試す。 結果、6 …