よろしくお願いいたします。
あるプロシージャにてADOにてコネクションとレコードセットを開き、
その最中、Call文の処理が行われます。
Call文にも、ADOにてコネクションとレコードセットを開く処理があります。
この場合、コネクションの変数、レコードセットの変数を同じにしてしまうと処理がおかしくなってしまうのでしょうか?
下記のような状況です。
よろしくお願いいたします。
Private Sub テキストボックス_AfterUpdate()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
rs.Open "テーブルA", cn, adOpenKeyset, adLockOptimistic
(途中のコードは略)
Call Quotation()
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
一方、Call先のプロシージャ
Public Sub Quotation()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.Open "Provider=SQLOLEDB;Data Source=AAAAAA;Initial Catalog=BBBBBB;UserID=admin;Password=5;"
rs.Open "テーブルB", cn, adOpenKeyset, adLockOptimistic
(途中のコードは略)
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
プロシージャ内で宣言した変数はプロシージャ内でのみ有効ですので、別のプロシージャに同じ名前の変数があっても問題ないです。(プロシージャレベルの変数といいます。)
hatena様
ご回答ありがとうございます。
プロシージャ内でのみ有効ということで理解しました。
変数が引き継がれないということで、安心しました。
ありがとうございました。
「VBA 変数 適用範囲」とか「VBA 変数 スコープ」などをキーワードにググればいろいろ解説ページが見つかりますので、それで研究してみてください。より、理解が深まると思います。
VBA 変数 適用範囲 - Google 検索
hatena様
追加のご連絡ありがとうございます。
確認してみます!