重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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名】はレコードロックされたままになってしまいます。

どのように修正したらよいのでしょう?

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/15 15:05

出あったことの無いエラーです。

差し支えなければ、コード全体を載せてください。
「DB変数は既に使用されているので、使用できませんでした。」
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/24 10:52

最終的に


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文)
って感じで、更新できると思います。

それでも症状が改善されなければ、原因は他にありかと、、、
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/08/24 10:53

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