プロが教える店舗&オフィスのセキュリティ対策術

下記のperlのソースでエラーになる。
use DBIx::Custom;
my $dbi = DBIx::Custom->connect(
dsn => "dbi:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/usui/Documents/Access/目標管理/151225.accdb"
);

下記のエラーが出る。
DBI connect('Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/usui/Documents/Access/目標管理/151225.accdb','',...) failed: [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 (SQL-IM002) at C:/Perl64/site/lib/DBIx/Custom.pm line 1656.
(DBIx::Custom::_connect) at C:\Users\usui\Documents\Access\目標管理\02.pl line 2.

perlのDBIx::Customはperldocで確認を取っています。odbcドライバーのインストールは終わっていますがそれ以外の設定が有るのでしょうか。

特にデータソースなどの設定はしていないのですが。詳しい方の説明をお願いします。

A 回答 (4件)

関係ないとは思うが文字コードはどうなってる?

    • good
    • 0

Perlについては皆目わかりませんが、ODBCドライバの対応Bit数が原因かも?


ExcelでODBCを使用して似たようなエラーになったことがあります。
OSが64Bitである場合、
ODBCを利用するアプリが32/64Bitにかかわらず64Bit版ODBCを参照しようとします。

そちらのエラー内容からC:\Perl64\site・・・なので
OS・Perlともに64BitのようですがODBCのドライバはどうなっていますか?
コントロールパネル→管理ツール→データソース(ODBC)から
ドライバータブにAccess のがありますか、(この場合は64Bit版が開きます)

Excelでトラブった時には32Bit版管理ツールでシステムDSNを作成して対処しました。
64Bit版→C:\Windows\System32\odbcad32.exe
32Bit版→C:\Windows\SysWOW64\odbcad32.exe
まずは、ご確認を。
    • good
    • 0
この回答へのお礼

dsnには二つのタブが有り、ユーザーdsnにはMS Access Databaseは有り
ますが。システムdsnには一切のドライバーは有りませんが。これが、
災いをしているのでしょうか。

宜しく、回答願います。

お礼日時:2016/02/08 04:29

先にも申しましたようにPerlについてはサッパリ…です。


ODBCの確認については、
64Bit版→C:\Windows\System32\odbcad32.exe
を立ち上げて
(コントロールパネル→管理ツール→データソース(ODBC)
を開くのと同じことです)
そのODBCデータソースアドミニストレーターのドライバータブに
Access関連のがあれば、私の見立て違いですので以下は読み捨ててください。
デフォルト状態だとSQL Serverしかないはず。

ODBCデータソースアドミニストレーターはもう一個隠されていて
32Bit版→C:\Windows\SysWOW64\odbcad32.exe
ですのでこっちのドライバータブには標準で入っているはずです。
(32Bit版と64Bit版を同時に立ち上げることはできません。)
32Bit版で「システムDSNタブ」を選択し
Microsoft Access Driver(*.mdb,*.accdb)を追加して
適当な名前で保存します。
VBAではこれでOKなのですが、肝心のPerlについては・・・なので
『perl odbc 32bit』でGoogleと古い記事ですが
http://www.tryhp.net/ODBC.htm
参考になるかもです。
骨折り損な結果になるかもしれませんがご容赦を。

こちらのカテゴリで再質問された方がよさそう?ですね。
https://oshiete.goo.ne.jp/category/255/
    • good
    • 0
この回答へのお礼

有難う御座います。
ユーザーdsnとシステムdsnの違いが分かりませんが。
ユーザーdsnには入っていますが、システムdsnには入っていません。
このシステムdsnに入っていないと使えないのでしょうか。

宜しく、お願いします。

お礼日時:2016/02/08 12:07

64Bit版のODBCデータソースアドミニストレーターで確認されたのですよね?!



ユーザーDSNに見える『MS Access Database』は32Bit版のが表示されているだけです。
『構成』ボタンを押してもエラーで叱られるだけです。
http://support.microsoft.com/kb/942976/ja
より抜粋
「64 ビット版の ODBC アドミニストレーター ツールは、64 ビットのシステム DSN、32 ビットのユーザー DSN、および 64 ビットのユーザー DSN を表示します。」
繰り返しになりますが、ドライバータブを開いてそこにAccess 関連のドライバーがあるか確認を。

そのうえで
OSとPerlの32/64Bitの明記も合わせてPerlカテゴリで再質問されては?
環境を構築して検証しつつ回答できればよいのでしょうけどPerlは不明のため
ミスリードが怖いのでこの辺が限界です。
    • good
    • 0
この回答へのお礼

下記で確認しました。
64Bit版→C:\Windows\System32\odbcad32.exe

と言う事は、64ビット版のドライバーはインストールしていない
と言う事でしょうか。ユーザーdsnにある
Microsoft Access Driverは32ビット版と言う事でしょうか。

お礼日時:2016/02/08 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!