• ベストアンサー

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名】はレコードロックされたままになってしまいます。 どのように修正したらよいのでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

開けたら閉じるようにしてください。 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

hiro_sun
質問者

お礼

ありがとうございます。 ご教授のとおり変更してみたのですが、今度は 「DB変数は既に使用されているので、使用できませんでした。」というエラーがでてしまいました。 ちなみに、レコードロックファイルはありませんが、 mdbを手動で開くこともできません。 再起動すると、元にもどります。

その他の回答 (2)

  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.3

出あったことの無いエラーです。差し支えなければ、コード全体を載せてください。 「DB変数は既に使用されているので、使用できませんでした。」

hiro_sun
質問者

お礼

他社での開発なので、コードをのせるのは・・・ すみません

回答No.2

最終的に 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文) って感じで、更新できると思います。 それでも症状が改善されなければ、原因は他にありかと、、、

hiro_sun
質問者

お礼

いろいろ試してみたのですが、どうにも解決できません。 でも、有難うございました。

関連するQ&A