![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
レコードセットを返す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アクセス後のメモリ解放
その他(データベース)
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
-
4
[VBA] ADOの Clone と AddNew
その他(プログラミング・Web制作)
-
5
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
6
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
7
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
8
ACCESS ADOでupdateが効かない
その他(データベース)
-
9
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
10
VB6+SQL サーバー 2000 で 実行時エラー '3704' がでます:
Visual Basic(VBA)
-
11
accessでイベントを中止するようなコマンドはあるのでしょうか?
その他(データベース)
-
12
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
13
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
14
ADO VBA 実行時エラー3021
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access IF文でテーブルに存在し...
-
ワードでの単純作業の効率化に...
-
ACCESS で マクロの中でフィ...
-
Access VBAでクエリーのレコー...
-
Access フォームのデータがテー...
-
Oracle 重複データの削除の仕...
-
ACCESS 顧客データ 購入履歴...
-
Access レコードロックについて...
-
ワードで保存するファイル名の...
-
データベースの1要素に複数デー...
-
ADOでレコードを閉じるタイミン...
-
Access クロス集計クエリについて
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでコードを入れると名前...
-
Accessでテーブルの値をテキス...
-
Access テキスト型に対する指定...
-
VBAで複数の数式セルを最終行ま...
-
Oracle 2つのDate型の値の差を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースの1要素に複数デー...
-
Access VBAでクエリーのレコー...
-
Access IF文でテーブルに存在し...
-
Access フォームのデータがテー...
-
顧客IDを入力すると顧客名や住...
-
ACCESS で マクロの中でフィ...
-
ワードでの単純作業の効率化に...
-
ワードで保存するファイル名の...
-
シングルクォーテーションとダ...
-
Access 縦(行)のデータを横(列)...
-
別のDBからテーブルをコピーす...
-
Access 既に開いているフォー...
-
Access2000 単票フォーム上の...
-
Accessデータベースで行と列を...
-
Accessで名寄せグループの関係...
-
文字化け、記号の含まれるフィ...
-
Access レコードロックについて...
-
【続続】Access2002で連番のつ...
-
ACCESSで重複したデータがある...
-
Access クエリ このレコードセ...
おすすめ情報