6月24日 (日)  DSNの種類とMyODBC日本語版

手がけたばっかりなので答えは出ていないのだが・・・

MSAccessからODBCを利用してMySQLへ接続しているのだが、データの入出力フォームに連結タイプと日連結タイプを利用している。んで、問題?が発生したのは日連結タイプの方で、フォームの設計というか動作はオープンイベントでDSNを指定してコネクションを張っておき、非連結コントロールに入力した値をボタンのクリックイベントでコネクションを利用して入力すると言う、極単純などこにでもあるパターンになっている。

異変に気づいたのは、puttyからサーバにログインしてコンソールからmysqlクライアント経由でSQLを発行したときに、先ほどのフォーム経由で入力したデータが文字化けしているのである。念のためwebminから該当するテーブルを見てもやっぱり文字化けしている。

んで、webminから文字化けしたデータを書き換えてから、Accessでそのレコードにアクセスするとハングしてしまう。

そこでデータソースを確認すると、アクセスからリンクテーブルを設定するときには表示された日本語版?のODBC設定画面が表示されないではないか?!
なんでやろ?と思い、ファイルDSNを新規作成してみると、こちらは日本語設定画面が表示される。(要するにEUCとSJIS変換を有効にするオプションが表示されるちゅうこと)

んな訳なので試しにフィルDSNを作成してそれを先ほどのコネクションストリング?に設定してコネクションを張ると上手く行ったようである。
しかし、原因がわからないちゅうか、そう言う仕様なのか・・・

もう少し、探ると共に、データを入れなおすか文字コードの変換を考えてみようと思う。

たぶんデータ入れ替えになると思うが、バックアップちゅうかダンプしたデータをnkfか何かで変換してもとに戻すなんちゅう手は使えんのかなぁ?

画像は左がコンパネのデータソースからシステムDSNを設定したときに出てきた設定画面。右がファイルDSNを設定したときに出てきた画面で、Accessのリンクテーブルの作成でODBCを選択した時はデータソースを指定するとこの画になる。

20070624-1.jpg 20070624-2.jpg