答えて
はい、ただし、レコードセット変数を別のレコードセットに再度割り当てる前に、レコードセットを閉じてください。ここでは一例です:この質問のコメントの
Dim rs As DAO.Recordset
Dim bTimeToChangeRecordsets As Boolean
Set rs = CurrentDb.OpenRecordset("Contacts")
'add business logic here'
If bTimeToChangeRecordsets Then
rs.Close
'setting to Nothing is not necessary here,'
'because setting to a new recordset instance has the '
'same effect on the variable reference count '
Set rs = CurrentDb.OpenRecordset("Comments")
End If
'more business logic'
rs.Close
Set rs = Nothing
多くは、これが必要であるかどうか、いつ、Nothing
にレコードセット変数を設定する必要性に焦点を当てている、そして閉じるに呼び出すことも必要であるかどうかレコードセット参照を解放する前にレコードセット。このトピックに関する優れた解説は、スタックオーバーフローに関するかなりの質問に広がっています。 this oneは、あなたの状況に特に関係します。私はthis knowledgebase articleとthis in-depth book excerptにもあなたを導いてくれるでしょう。
アクセス制限の参照がうまくいっていれば、明示的に参照を解放するには、Nothing
に設定したり、明示的にレコードセットを閉じることを心配する必要はありません。 Howerverの実践的な経験から、Accessの振る舞いを考えると、これらの習慣はどちらもVBAをコーディングするベストプラクティスの一部でなければならないということがわかります。
実際、再利用する前に変数を閉じる必要はありません。 –
レコードセットを開いたままにしておくと、参照が失われるため、レコードセットを閉じることはできません。これは良くない。 –
どのような参照は失われますか?あなた自身でこれを試しましたか? –
はい、変数が2つのレコードセットを指しているとは限りません。
しかし、質問はなぜでしょうか?あなたは何を保存すると思いますか?リソース?大したことではありません。また、コードの可読性にも問題があります。あなたが今から1週間後に他の誰かがあなたのコードを見ているなら、何が起こっているのか分からないかもしれません。したがって、テーブル/クエリごとにレコードセット変数を提案します。
また、変数の範囲もあります。サブルーチン/関数で定義されている場合、そのサブ/ファンクションでのみ表示されます。一番上にあれば、フォーム/レポート/モジュール内のすべての関数/関数に表示されます。モジュール内でグローバルであると述べると、どこにでも表示されます。
質問はなぜですか?
複数の同一のテーブルから同じ操作をループして実行する必要がある場合は、レコードセット変数を再利用することができます。しかし、再び、もしそれらが同一であれば、それはなぜ別れているのですか? – BIBD
私は、新しいオブジェクトの変数を再利用することは、明らかに悪い習慣であると考えています。 CodeSlaveの例は関連しています。 –
Paul、CodeSlaveの具体的な例ですしかし、一般的には、同じサブルーチン/関数で同じ変数をコード内で混乱するように再利用するべきではないと言います。 –
- 1. 同じマシンで異なるバージョンのレールを使用できますか?
- 2. 異なるUIViewControllerサブクラスを渡す同じメソッドを使用できますか?
- 3. javascript関数で同じ変数とパラメータ名を使用できますか?
- 4. 同じ剣道UIグリッドに異なるエディタテンプレートを使用できますか?
- 5. 同じソケットで同じアプリケーションで異なるプロトコルを使用する
- 6. 2人の異なるユーザーが異なるアプリケーションで同じFacebookサードパーティIDを使用できますか?
- 7. NHibernate - 異なるキーで同じテーブルへの複数のJOIN
- 8. Windowsで異なるシナリオで同じフォームを使用する
- 9. 同じフォームクラスの異なるインスタンスは、どのように異なるウィンドウクラススタイルを使用できますか?
- 10. 異なるHSQLDBテーブル内の同一列が同じである
- 11. 異なる変数を同じページに渡します
- 12. 異なるコンテキスト変数に同じSeamクラスをバインドします
- 13. 同じクエリは異なるインデックスを使用しますか?
- 14. 同じ式ですが、関数で使用すると異なる戻り値
- 15. データセットはレコードセットと同じです
- 16. SELECTで変数を代入し、後で同じSELECTで変数を使用できますか?ここ
- 17. ASP.net MultiViewの異なるビューで同じコントロールインスタンスを使用する
- 18. 同じアニメーションで2つの異なるUIViewAnimationCurvesを使用する
- 19. 同じプロセスで異なるバージョンのPythonライブラリを使用する
- 20. 同じアプリで異なるデバイスにメモリ/ RAMを使用する
- 21. 同じプロジェクトで2つの異なるスケジューリングポリシーを使用する
- 22. 同じコードで異なるタイプを使用するリファクタリングメソッド
- 23. 同じテキストボックスで異なるフォント色を使用する
- 24. libgdxでサイズの異なる同じフォントを使用する
- 25. Subsonic:同じ列名の異なるテーブル
- 26. 異なる関数を書くときと、同じ関数をパラメータで使うときはいつですか?
- 27. 同じ変数が異なる実行で異なる仮想アドレスを持つのはなぜですか?
- 28. C異なるファイルで定義された同じグローバル変数
- 29. クラスの異なる関数で同じ変数を使用して値を取得する
- 30. 同じ文字列で異なるfillStylesを使用していますか?
あなたが何を求めているのかわかりません –
私たちにあなたがしようとしていることの例を示してください。 –
私はあなたがVBAスクリプト手続きを書いていると思います。私がしようとしているのは、最初のテーブルが終了したときにレコードセットに使用する "オブジェクト"変数をNullに設定することです。オブジェクトに関連付けられた割り当てられたリソースを解放し、同じテーブルまたは別のテーブルに関連付けられた別のクエリの結果を保持するように再初期化できます。 – hardmath