VB6.0とParadoxでADOを使用して、現在のセッションとは別フォルダのファイルを抽出するには?

解決


ADO初心者  2004-01-08 10:22:26  No: 81324  IP: [192.*.*.*]

現在の状態を簡単に表記します。
--------------------------------
DBフォルダ:D:\DATA
WKフォルダ:D:\WKDB
DBフォルダ内格納ファイル:M_ABC.DB
WKフォルダ内格納ファイル:W_ABC.DB
--------------------------------
'ADOセッション開始
Set AdoDBSession = New ADODB.Connection
AdoDBSession.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D\DATA;Extended Properties=Paradox 5.x;Persist Security Info=False"
AdoWdbSession.Open
'抽出
xSqlTxt = "SELECT * FROM W_ABC IN 'D:\WKDB'"
Set aDs = AdoDBSession.Execute(xSqlTxt)

上記で抽出を行うと、
  実行時エラー '-2147467259(80004005)'
  ファイル 'D:\WKDB'を開くことができませんでした。ほかのユーザーが排他的に
  開いているか、データを読み取る権限がありません。
と、メッセージが出てきて抽出できません。

解決策がわかる方、お願いいたします。

編集 削除
ADO初心者  2004-01-08 10:24:41  No: 81325  IP: [192.*.*.*]

ロジックの3行目に間違いがありました。

誤)AdoWdbSession.Open
正)AdoDBSession.Open

申し訳ありません。

編集 削除
岡田 之仁  2004-01-08 11:39:48  No: 81326  IP: [192.*.*.*]

そのものではありませんが・・・

http://support.microsoft.com/default.aspx?scid=kb;ja;306269

こういうものが該当しませんか?

ご参考までに・・・

※  稼動環境は?(OSやADOのバージョン)

以上。

編集 削除
ADO初心者  2004-01-08 11:48:13  No: 81327  IP: [192.*.*.*]

ありがとうございます。参考にしてみます。

稼働環境はOS=WINDOWS2000,ADO-Version=2.8です。
ちなみにADOは2.5〜2.8まで試してみました。

編集 削除
岡田 之仁  2004-01-08 12:26:32  No: 81328  IP: [192.*.*.*]

Paradox のバージョンは?

http://support.microsoft.com/default.aspx?scid=kb;ja;141796

該当しないものの場合、確かに開けませんが・・・

以上。

編集 削除
岡田 之仁  2004-01-08 12:35:44  No: 81329  IP: [192.*.*.*]

http://support.microsoft.com/default.aspx?scid=kb;ja;263561
http://support.microsoft.com/default.aspx?scid=kb;ja;286246
http://support.microsoft.com/default.aspx?scid=kb;ja;230126
http://support.microsoft.com/default.aspx?scid=kb;ja;159527

これらの内容は大抵同じ内容(意味)を指し示していますが、
あくまで参考と言うことで。

●  Executeしないで、Recordsetで、リードオンリーで開いてみて
    頂けませんか?

    それで動けば、多分Executeでは、リードライトモードなので
    その為のエラーかもしれません。

以上。

編集 削除
ADO初心者  2004-01-08 13:44:09  No: 81330  IP: [192.*.*.*]

Executeメソッドを使用せず、リードオンリーで開いてみてましたが、同じエラーが出てしまいました・・・。

一応ソースを貼り付けておきます。

<前回>
xSqlTxt = "SELECT * FROM W_ABC IN 'D:\WKDB'"
Set aDs = AdoDBSession.Execute(xSqlTxt)
<今回>
xSqlTxt = "SELECT * FROM W_ABC IN 'D:\WKDB'"
Set aDs = New ADODB.Recordset
aDs.ActiveConnection = AdoDBSession
aDs.Open xSqlTxt, AdoDBSession, adOpenStatic, adLockReadOnly

他にも色々試してみます。

編集 削除
岡田 之仁  2004-01-08 14:46:11  No: 81331  IP: [192.*.*.*]

今気がつきまいsた・・・

こんがらがらせてすみません・・・

1ツのParadoxファイルをオープンして、このコネクションを
利用して違う場所のものは、オープンできません。
当然、これがアクセスとかエクセルでも同じです。

基本的な使用方法に誤りがあります。

JET経由でのADOでDBをオープンする場合、必ず、1ファイル
1コネクションで行って下さい。

それからまだエラーが出るようでしたら、また投稿して下さい。

以上。

編集 削除
ADO初心者  2004-01-08 14:57:28  No: 81332  IP: [192.*.*.*]

ありがとうございます。
可能不可能がわかったので、違う方法でやってみます。
また何かわからない事があったら質問しに来ます。

それでは。

編集 削除