レコードセットを返すFuncitonプロシージャーを作ってみたのですが。。。
下のGet_Recordsの方のレコードセットをCloseすると上の方のDisp_Dataでオブ
ジェクトが閉じているといって怒られます。しかし、閉じないと下の方では開きっ
ぱなしになると思うのですが。。。どのように処理すればいいのでしょうか?
Public P_CN As ADODB.Connection
Private Sub Disp_Date()
Dim RS As ADODB.Recordset
Dim SQL AS String
Set RS = Get_Records(SQL)
With RS
If .RecordCount > 0 Then
.MoveLast: .MoveFirst
.Debug.Print !顧客_ID
End If
End With
RS.Close
Set RS = Nothing
End Sub
Public Function Get_Records(pSQL As String) As ADODB.Recordset
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
RS.Open pSQL, P_CN, adOpenKeyset, adLockOptimistic
Set Get_Records = RS
''' RS.Close
''' Set RS = Nothing
End Function
No.2ベストアンサー
- 回答日時:
Get_Recordsで閉じる必要はないと思いますけど
##私は引数でADODB.Recordsetを渡している関数を作っていますが、問題ないですね。
##もちろんレコードセットを閉じる為の関数も作ってますけどね。
No.3
- 回答日時:
>下のGet_Recordsの方のレコードセットをCloseすると上の方のDisp_Dataでオブジェクトが閉じているといって怒られます。
>しかし、閉じないと下の方では開きっぱなしになると思うのですが。。。
Function や Sub の引数で ByVal と ByRef というのがありますよね。Get_Records の戻り値も ByRef と同じようなものと考えるとわかりやすいと思います。Get_Records の中でオープンしたレコードセットと Disp_Date に返ってきたレコードセットは同一のものです。なので、Get_Records の中では Close せずに、呼び出し側 ( Disp_Date ) で Close するのが正解です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
[VBA] ADOの Clone と AddNew
その他(プログラミング・Web制作)
-
7
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
8
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
9
【Access】サブフォームのソースオブジェクトを入れ替えたい
Access(アクセス)
-
10
帳票フォームに全レコードを表示できない
その他(データベース)
-
11
Access サブフォームでの選択行の取得
その他(データベース)
-
12
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
13
ACCESS ADOでupdateが効かない
その他(データベース)
-
14
VB6+SQL サーバー 2000 で 実行時エラー '3704' がでます:
Visual Basic(VBA)
-
15
accessでイベントを中止するようなコマンドはあるのでしょうか?
その他(データベース)
-
16
accessでレコード更新直後の反映について
その他(データベース)
-
17
VBAでアクセスDBからデータの取得について
Visual Basic(VBA)
-
18
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
19
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access IF文でテーブルに存在し...
-
ワードでの単純作業の効率化に...
-
Access VBAでクエリーのレコー...
-
Accessのwhere条件式について教...
-
データベースの1要素に複数デー...
-
ADOでレコードを閉じるタイミン...
-
Accessで名寄せグループの関係...
-
複雑なinsert文の書き方について
-
Access フォームのデータがテー...
-
ACCESS2003 Aアクロバットを介...
-
Access 縦(行)のデータを横(列)...
-
別のDBからテーブルをコピーす...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessで数値型にNULLをInsert...
-
Accessのフィールド数が255しか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースの1要素に複数デー...
-
Access IF文でテーブルに存在し...
-
Access VBAでクエリーのレコー...
-
別のDBからテーブルをコピーす...
-
ACCESS で マクロの中でフィ...
-
ワードでの単純作業の効率化に...
-
Access 既に開いているフォー...
-
Access フォームのデータがテー...
-
ワードで保存するファイル名の...
-
シングルクォーテーションとダ...
-
Access レコードロックについて...
-
顧客IDを入力すると顧客名や住...
-
Accessで名寄せグループの関係...
-
Accessデータベースで行と列を...
-
ADOでレコードを閉じるタイミン...
-
Access 縦(行)のデータを横(列)...
-
ファイルメーカーの集計につい...
-
Access 新規入力画面にするコー...
-
Access クエリ このレコードセ...
-
Access2013VBA 複数のテーブル...
おすすめ情報