教えてください。
mdbを利用したactive sever pagesを作成しているのですが、ODBCのバージョンによってうまくいったり、いかなったりしてるような気がします。
A:Ver3.51
B:Ver4.00の場合

Bのときは、問題なく動作するのですが、Aのときは全くレスポンスがなくなります。また、その後、ODBCに設定されているフォルダを削除しようとしても、使用中のため削除できないというメッセージが出ます。

上記の様にODBCドライバのバージョンによって正常に動かなくなることはあるのでしょうか?
また、バージョンアップの方法を教えてください。

A 回答 (1件)

ODBCドライバのバージョンによってソフトの動作が異なるというのは、


ASPに限らず、よくある話です。

原則として、ODBCドライバのバージョンは統一すべきです。
ドライバの削除がうまくいかない場合は、OSの再インストールを
してでもやっておかないと、後で自分が困ることになります。

基本的には、うまく動作するバージョンで合わせるようにします。
必ずしも最新バージョンでなければいけないということはないで
すが、今回のケースでは新バージョンでOKでしょう。

またAccessの場合、インストールするAccessの種類によって
ODBCドライバのバージョンが異なりますので、Accessのバージョン
に留意して作業してください。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QWin7 64bit:ODBC経由でMDB接続不可

こんにちは

PHPからODBC経由で.mdbファイルを操作しようとして躓いています。
OSはWindows 7 64bitで、インストールしているMS Officeは32ビット (Office 2007)ですが、MS Accessはインストールしていません(先日、MS Accessを含むOffice 最新版の試用版をインストールしたのち削除しました)。

「C:\Windows\SysWOW64」以下の「odbcad32.exe」を管理者権限で開いてシステムDSNにドライバを設定してPHPから接続を試みたのですが、エラー「IM014」が返ってきました。調べると「指定されたDNSには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています」ということだそうです。

「C:\Windows\System32」以下の「odbcad32.exe」でドライバを設定すればよいのかと思いましたが、管理者権限で開いても指定可能なドライバが表示されません。

どういった設定をすべきでしょうか?

Aベストアンサー

PHP_INT_SIZE で32bit版か64bit版かはわかりません。
http://www.php.net/manual/ja/language.types.integer.php

一般に、64bitOSにPHPの32bit版は入らないはず。
古いバージョンでは入りますが、最新版はダメです。
タスクマネージャでphp.exeを見て*がなければ64bitです。

大原則として、64bitプロセス空間には64bitのDLLしか
ロードできません。同じく32bitプロセスには32bitのDLL
しかロードできません。ODBCがDLL実装(これが大半)で
あれば32bit版のODBCを64bitPHPで扱うことはできません。

プロセス間通信を使って、異なるプロセスでODBCを稼動
させ、データを通信により受け渡します。プロセスが違う
ので、64bit/32bitの壁をスルーできます。但し、これを実装
するには独自にPHPエクステンションを作るか、exe型の
COMモデルを使うしかないと思います。

私は前者は開発した経験がありますが、後者は経験が
ありません。PHPエクステンションの開発は非常に難しく、
Windowsのプロセスにやスレッドに関する技術、PHPの
データ管理法、DLLとのインターフェースなどの知識が
無いと作れません。
また、exe型のCOMモデルは非常に少なく、Office系での
実装しか見たことがありません。

Accessがインストールされていれば、とりあえず、COM
オブジェクトでAccess.Applicationをインスタンス化して
操作を試みます。成功すれば何とかなると思います。
PHPとCOMでググってみてください。

PHP_INT_SIZE で32bit版か64bit版かはわかりません。
http://www.php.net/manual/ja/language.types.integer.php

一般に、64bitOSにPHPの32bit版は入らないはず。
古いバージョンでは入りますが、最新版はダメです。
タスクマネージャでphp.exeを見て*がなければ64bitです。

大原則として、64bitプロセス空間には64bitのDLLしか
ロードできません。同じく32bitプロセスには32bitのDLL
しかロードできません。ODBCがDLL実装(これが大半)で
あれば32bit版のODBCを64bitPHPで扱うことはできません。

プロセス間...続きを読む

QAccessでODBC接続できない

(1)コントロールパネル⇒管理ツール⇒ODBCを選択。
(2)「システムDSN」タブを選択し、「追加」を選択。
(3)ローカルにあるエクセルファイルを選択。データソース名はtest。
(4)Access2003を起動し、テーブルのリンクでODBCを選択し、(3)で作ったtestを選択すると、ODBCを使用して外部MicrosoftJet…のエラーメッセージ。

どなたか解決方法を教えてください。

Aベストアンサー

ExcelやテキストファイルはDSNを作らなくても直接、リンクすることが
できます。つまり、エンジンで元々可能な形式をODBC接続しようと
したので、嫌がっているのです。

Q以前まで動いていたMDBが突然・・・

お世話になります。
今回も、とても不思議な出来事に遭遇したので、ご質問させて
頂きます。
Win2000、ACCESS2000で開発したMDBを、WinXPで動かしています。
今までは、問題なく動作していましたが、ある日、突然、
「メソッド「「オブジェクト _Application」の CurrentDB」には、失敗しました。」
というエラーメッセージが出て、
Set Rs = CurrentDB.OpenRecordSet("Select * from A ")
の行で止まってしまいました。
しらべた所、どうも
http://support.microsoft.com/?scid=kb;ja;887033&spid=2509&sid=62
の症状みたいなので、サポート情報とおりに操作した所、無事動作しました。
問題は、なぜ今まで動いていたのに突然におかしくなったのか、ということです。クライアントで頻繁に起こる可能性もないとはいえません。
マイクロソフトのサポート情報では、原因はDao360.dllが正しくインストールされていないといったことらしいのですが、過去に正しく動作していたものが突然おかしくなるというのが、すごく気になっています。
動かしているPCの所有者も、特に心当たりはないそうです。
プログラムでも、レジストリ関係をいじるような事はしていないのですが、
こういう事は、起こりえることなのでしょうか?
Windowsのバグとか、プログラムでこういう事をした時になる可能性がある、など、どんな些細な事でもいいので心当たりのある方がいらっしゃいましたら、アドバイス頂けましたら幸いです。

お世話になります。
今回も、とても不思議な出来事に遭遇したので、ご質問させて
頂きます。
Win2000、ACCESS2000で開発したMDBを、WinXPで動かしています。
今までは、問題なく動作していましたが、ある日、突然、
「メソッド「「オブジェクト _Application」の CurrentDB」には、失敗しました。」
というエラーメッセージが出て、
Set Rs = CurrentDB.OpenRecordSet("Select * from A ")
の行で止まってしまいました。
しらべた所、どうも
http://support.microsoft.com/?scid=kb;ja;887033&spid=250...続きを読む

Aベストアンサー

私も突然そのエラーになった経験があります。
理由は今もってわかりません。
(明確な原因がある場合もあるのでしょうけど・・・)

Accessでは他にもそういったことがちょくちょくあるので
そういうソフトだと割り切って使っています。

QACCESS2000 MDBの管理をしようとして

お世話になります。

作成したMDBの管理をしようと、単純にどこかにバージョンを入れておこうと思いましたが…
■質問1.MDB右クリック~プロパティ~概要タブの中に値をいれましたが、最適化すると消えてしまうんですが正常でしょうか?(閉じる時に最適化しています。)
■質問2.MDBを開いて[ファイル]~[データベースプロパティ]の中の詳細情報タブに、「更新者」・「改訂番号」・「編集時間」の項目がありますが、これらには値が表示されていませんが、どういったものなのでしょうか?改訂番号を使用できるのかと思いましたが、設定する場所がないようですので…

以上、宜しくお願いいたします。

Aベストアンサー

私の場合、職場で使用しているmdbでは、バージョン情報を記録する
ためのテーブルを別に作って対応しました。
・・・と、それはともかくとして。

・「■質問1」について
 試しにmdbファイルのプロパティで『作成者』や『タイトル』を記録して
 最適化したところ、仰るとおり、こちらでもデータが消えました。
 mdbの最適化は、そのファイルに対して行われるのではなく、
  1)新規ファイル(通常はdb1.mdb)として最適化したファイルを作成
  2)最適化前の古いファイルを削除
  3)新しいファイルの名前を、古いファイルで使っていた名前に書き換え
 という流れで行われますので、その際にこのプロパティのデータまで
 引き継ぐようになっていない、ということだと思います。

・「■質問2」について
 AccessやExcelでは『詳細情報』タブの「改訂番号」や「編集時間」は
 更新されませんが、Wordではこの情報が自動的に更新されます。
 このプロパティを表示するシートは、MS Office全体で共通として用意
 されていますが、実際には、全てのアプリケーションが全ての項目に
 対応しているというわけではないようです。
 (例えば「改訂番号」に記録されるのは「そのファイルを保存した回数」だ
  そうですので、そういう意味だと確かにAccessでは「あっても無意味」
  ということで、対応されていない、ということなのだと思います)

私の場合、職場で使用しているmdbでは、バージョン情報を記録する
ためのテーブルを別に作って対応しました。
・・・と、それはともかくとして。

・「■質問1」について
 試しにmdbファイルのプロパティで『作成者』や『タイトル』を記録して
 最適化したところ、仰るとおり、こちらでもデータが消えました。
 mdbの最適化は、そのファイルに対して行われるのではなく、
  1)新規ファイル(通常はdb1.mdb)として最適化したファイルを作成
  2)最適化前の古いファイルを削除
  3)新しいファイル...続きを読む

QSQL文について質問です(mdb)

ADO接続にてmdbを使い開発しています。

例えば、フィールドが[001],[002],[003]とあるとします。
いずれかひとつだけに値が入っていた場合にそのレコードを取得したいと思っています。

例えば、
・[001]がNull、[002]が'1'、[003]がNullであれば[002]にのみに値があるので抽出
・[001]が'1'、[002]が'1'、[003]がNullであれば[001]と[002]の2つに値が入っているので対象外。
といった感じです。

また、[001],[002],[003] は3つだけとは限らずその時々によって変化します。

どなたかお力添え頂けたらと思います。

Aベストアンサー

フィールドの値がNULLなら1、NULL以外なら0に置き換えて合計を別フィールドに出力する方法をクエリーで考えてみました。

SELECT IIF(IsNull([001]),1,0) AS F1, ... , F1+F2+F3 AS CF ...

やり方にこだわらないなら、同様の方法で CF=1 を検索条件に使うとできると思われます。


このカテゴリの人気Q&Aランキング

おすすめ情報