Microsoft Access 掲示板

ADOで開いている最中、Callで呼び出した中にも同じくADOで、同変数名にての処理で、問題があるかどうか?

4 コメント
views
4 フォロー

よろしくお願いいたします。

あるプロシージャにて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

あん
作成: 2023/04/10 (月) 10:44:58
最終更新: 2023/04/10 (月) 10:52:43
通報 ...
1

プロシージャ内で宣言した変数はプロシージャ内でのみ有効ですので、別のプロシージャに同じ名前の変数があっても問題ないです。(プロシージャレベルの変数といいます。)

2
あん 2023/04/10 (月) 14:00:48 927ea@d0fce

hatena様

ご回答ありがとうございます。

プロシージャ内でのみ有効ということで理解しました。
変数が引き継がれないということで、安心しました。

ありがとうございました。

3

「VBA 変数 適用範囲」とか「VBA 変数 スコープ」などをキーワードにググればいろいろ解説ページが見つかりますので、それで研究してみてください。より、理解が深まると思います。

VBA 変数 適用範囲 - Google 検索

4
あん 2023/04/13 (木) 10:44:14 927ea@2350e

hatena様
追加のご連絡ありがとうございます。
確認してみます!