- ベストアンサー
mdbがとじれない
VB6で開発をしています。 DB変数A = OpenDatabase(【mdb名】) Set QUERY変数B = DB変数A.CreateQueryDef("") QUERY変数B.SQL = SQL文 QUERY変数B.Execute (中略) Set レコード変数C = DB変数A.OpenRecordset(SQL文2) (中略) Set DB変数A = Nothing といった処理を行っています。 この処理を繰り返すのは問題ないのですが、 この処理で使用している【mdb名】はレコードロックされたままになってしまいます。 どのように修正したらよいのでしょう?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
開けたら閉じるようにしてください。 DB変数A = OpenDatabase(【mdb名】) Set QUERY変数B = DB変数A.CreateQueryDef("") QUERY変数B.SQL = SQL文 QUERY変数B.Execute (中略) Set レコード変数C = DB変数A.OpenRecordset(SQL文2) (中略) レコード変数C.Close '追加 DB変数A.Close '追加 Set DB変数A = Nothing
その他の回答 (2)
- ctrlzr
- ベストアンサー率29% (18/62)
出あったことの無いエラーです。差し支えなければ、コード全体を載せてください。 「DB変数は既に使用されているので、使用できませんでした。」
お礼
他社での開発なので、コードをのせるのは・・・ すみません
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
最終的に Set レコード変数C = DB変数A.OpenRecordset(SQL文2) をしていのですよね? この部分 Set QUERY変数B = DB変数A.CreateQueryDef("") QUERY変数B.SQL = SQL文 QUERY変数B.Execute が何をしているのかわからないけど、クエリを呼ぶ必要が無いのでは? 状況も、QueryDefがメモリ上に残っちゃっている時の症状に似てるので、、、 もし、更新クエリや追加クエリのSQL文なのであれば、単に更新系のSQL文を発行するだけでよいですよ。 書き換えると Call DB変数A.Execute(SQL文) って感じで、更新できると思います。 それでも症状が改善されなければ、原因は他にありかと、、、
お礼
いろいろ試してみたのですが、どうにも解決できません。 でも、有難うございました。
お礼
ありがとうございます。 ご教授のとおり変更してみたのですが、今度は 「DB変数は既に使用されているので、使用できませんでした。」というエラーがでてしまいました。 ちなみに、レコードロックファイルはありませんが、 mdbを手動で開くこともできません。 再起動すると、元にもどります。