はじめまして。
VBでSQLServerとdBASEのデータ(*.dbf)をADOで使用しているのですが、PCによってエラーが発生してしまいます。
処理は、
[コネクション].Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=[dbfのフォルダ];"
[レコードセット].Open [SQL], [コネクション].ConnectionString, adOpenKeyset, adLockReadOnly
としています。
ここで、レコードセットのOpenで「ODBC ドライバは要求されたプロパティをサポートしていません。」とエラーになります。
また、「adOpenKeyset, adLockReadOnly」を省略すると、「テーブルは、マシン '(未定義)' のユーザー '(未定義)' によって使用されているので、ロックできませんでした。」とエラーになります。
これは、プログラムから起動した別のシステムでも同じdbfファイルを参照しているためと思いますが、それでも読取専用でOpenしているにも関わらずロックしようとしているのがわかりません。
環境の差としては、
【エラー発生】
Win2000SP3+Office2000SP1+SQLServer7SP4(その他複数アプリ)
【正常動作】
Win2000SP3+Office2000SP1+SQLServer7(その他アプリなし)
WIn2000SP3+Office2000SP1+SQLServer2000SP3(その他複数アプリ)
です。
どなたか原因・エラーの回避方法をご存知の方がおられましたら教えてください。
よろしくおねがいします。
この質問では状況が掴めないので適切な回答をする事ができません。
自作ですが、ADO操作のサンプルソースを見てください。
http://www.takonet.co.jp/~pegasus/samples/AdoOperation.lzh
推測ですが、ライブラリーのバージョンが違う可能性があります。
最新のマシン環境では新しいバージョンがインストールされていますので、
そのライブラリを他のマシンでも探そうとしてしまいますよ。
参照設定の「Microsoft ActiveX Data Objects」の2.0を選択してみてはいかがでしょうか?
検討違いだったらごめんなさい。
また、上記の「最新のマシン・・・」は「開発用のマシン・・・」の誤りです。
「参照設定」を使用しないADO操作に変更しましたので、参考にしてください
色々アドバイスありがとうございます。
ライブラリ自体は、開発したシステムを他のPCにセットアップする際に、開発環境で使用しているものも含めてコピー・レジストリ登録しているので、バージョンの差はないはずなのですが…
それから、最後に変更されたのは上のLZHですよね?
さっそく試してみます。
テスト環境がなかなか無いので難しいのですが、また結果を報告させて頂きます。
コピー・レジストリ登録の時にODBCドライバーも一緒にしてますよね?
ライブラリーだけではなく、各種データベース用ドライバーも差異がありますので、コピー・レジストリ登録で大丈夫なのでしょうか?
私は、MDACを使って他のPCと動作環境を同じにしています。
MDACであれば、ADOやDAO、ODBCドライバ等、をインストールしてくれますので・・・
詳しくは、http://www.microsoft.com/japan/msdn/data/download.asp
に載っていますので、確認してみてください。
また、MDACのバージョンを調べるツールもこのサイトにあります。
ドライバのバージョンもチェックしましたが、全く同じでした。
また、DB接続方法も、最初に記述したように直接パス指定するのではなく、ODBCデータソースを作成し、それを呼び出して使用しても全く同じエラーが発生してしまいます。
つかみ所の無い質問で申し訳ありませんが、もう自分で考えられる原因・対処法報が尽きてしまいました。
何か他に確認すべき点などありますでしょうか?
dBASEは未経験なので、回答にはならないかも知れませんが…。m(_ _)m
まず、MDAC 2.1以上では、dBASEの更新のために BDE(Borland Database Engine)が
必要だったかと思いますが、それはインストールされていますか?
また、前方方向参照読み込み専用カーソルとなりますが、
Set Recordset = Connection.Execute(SQL)
の構文だとどうでしょうか?
> [レコードセット].Open [SQL], [コネクション].ConnectionString, adOpenKeyset, adLockReadOnly
CursorLocation 2種, CursorType 4種, LockType 4種のプロパティ、計32種の
組み合わせを、すべて試してみてはいかがでしょうか。
OLE DB Provider(あるいはそれとODBCの組み合わせ)というのは、それぞれ、
サポートしているカーソルの組み合わせが異なります。サポートしていない
組み合わせを選んだ場合、適切なカーソルに自動的に変更されるプロバイダもあれば、
エラーになってしまうプロバイダもありますので。
ツイート | ![]() |