2011-01-31 20 views
-1

私はMicrosoft Accessを初めて使用しています。異なるテーブルで同じレコードセット変数を使用できますか?

異なるテーブルで同じレコードセット変数を使用するにはどうすればよいですか?

+0

あなたが何を求めているのかわかりません –

+1

私たちにあなたがしようとしていることの例を示してください。 –

+0

私はあなたがVBAスクリプト手続きを書いていると思います。私がしようとしているのは、最初のテーブルが終了したときにレコードセットに使用する "オブジェクト"変数をNullに設定することです。オブジェクトに関連付けられた割り当てられたリソースを解放し、同じテーブルまたは別のテーブルに関連付けられた別のクエリの結果を保持するように再初期化できます。 – hardmath

答えて

0

はい、ただし、レコードセット変数を別のレコードセットに再度割り当てる前に、レコードセットを閉じてください。ここでは一例です:この質問のコメントの

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 articlethis in-depth book excerptにもあなたを導いてくれるでしょう。

アクセス制限の参照がうまくいっていれば、明示的に参照を解放するには、Nothingに設定したり、明示的にレコードセットを閉じることを心配する必要はありません。 Howerverの実践的な経験から、Accessの振る舞いを考えると、これらの習慣はどちらもVBAをコーディングするベストプラクティスの一部でなければならないということがわかります。

+2

実際、再利用する前に変数を閉じる必要はありません。 –

+0

レコードセットを開いたままにしておくと、参照が失われるため、レコードセットを閉じることはできません。これは良くない。 –

+0

どのような参照は失われますか?あなた自身でこれを試しましたか? –

2

はい、変数が2つのレコードセットを指しているとは限りません。

しかし、質問はなぜでしょうか?あなたは何を保存すると思いますか?リソース?大したことではありません。また、コードの可読性にも問題があります。あなたが今から1週間後に他の誰かがあなたのコードを見ているなら、何が起こっているのか分からないかもしれません。したがって、テーブル/クエリごとにレコードセット変数を提案します。

また、変数の範囲もあります。サブルーチン/関数で定義されている場合、そのサブ/ファンクションでのみ表示されます。一番上にあれば、フォーム/レポート/モジュール内のすべての関数/関数に表示されます。モジュール内でグローバルであると述べると、どこにでも表示されます。

質問はなぜですか?

+0

複数の同一のテーブルから同じ操作をループして実行する必要がある場合は、レコードセット変数を再利用することができます。しかし、再び、もしそれらが同一であれば、それはなぜ別れているのですか? – BIBD

+0

私は、新しいオブジェクトの変数を再利用することは、明らかに悪い習慣であると考えています。 CodeSlaveの例は関連しています。 –

+0

Paul、CodeSlaveの具体的な例ですしかし、一般的には、同じサブルーチン/関数で同じ変数をコード内で混乱するように再利用するべきではないと言います。 –

関連する問題