ADOで正常にクローズするには?

解決


へえちゃん  2004-01-15 20:21:42  No: 81458

初めて質問します。Access2002表現百科850とゆう本を参考にしてADOを使用したソースを書いたのですがレコードセットが「オブジェクトが閉じている場合は、操作は許可されません。」とエラーが表示されます。レコードセットのクローズを削除すればエラーは出ずに処理自体は行われるんですがいまいち意味が理解できず気持ち悪いです。ご存じの方がいましたらご助言いただきたいと思います。ちなみにソースは
'接続
Set cn = CurrentProject.Connection
'SQL削除ステートメントを設定
mySQL = "DELETE FROM T_受入申込印字"
'選択クエリを実行する
rs.Open mySQL, cn, adOpenKeyset, adLockOptimistic
For Each varItem In ctl.ItemsSelected
    strWhere = "(受付番号 = '" & ctl.ItemData(varItem) & "')"
    'SQL選択ステートメントを設定
    mySQL = "INSERT INTO T_受入申込印字 SELECT * FROM MT_受入申込_     WHERE " & strWhere & ""
    '選択クエリを実行する
    rs.Open mySQL, cn, adOpenKeyset, adLockOptimistic
Next
DoCmd.OpenReport "R_受入企業住所選択ラベル", acPreview  '選択表示
'終了処理
rs.Close: Set rs = Nothing←ここでエラー発生
cn.Close: Set cn = Nothing
よろしくお願いします。
ちなみに使用ライブラリーはADO2.1です。


へえちゃん  2004-01-15 20:24:43  No: 81459

追加です。
'SQL選択ステートメントを設定の部分が入力時に行が変わっていたので変な入力してしまいました。正しくは
mySQL = "INSERT INTO T_受入申込印字 SELECT * FROM MT_受入申込 WHERE " & strWhere & ""
です。よろしくお願いします。


へえちゃん  2004-01-15 20:30:44  No: 81460

追加
参考にしていた本の題名間違えました。
ACCESS  VBA  応用プログラミング  でした。


ココア  2004-01-20 02:39:18  No: 81461

この場合、xxx.close はいりません。Nothing のみでOKです。
DELETE 文も同様です。INSERT や DELETE文は 同時にクローズします。
たとえば、SELECTして 1レコードづつ削除していく場合は Closeがいります。


へえちゃん  2004-01-21 20:21:52  No: 81462

ココアさん。ありがとうございました。意味がわかってスッキリしました。質問ついでで申し訳ないんですが、今回のような事が解りやすく解説されている(命令の説明とかですね。)本とかココアさんの主観でよいのご存じであれば教えていただけますか。よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加