
レコードセットを返す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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
-
4
ADOでRecordsetオブジェクトをレコードソースに設定したい
その他(データベース)
-
5
VBのレコードセットを閉じないとどうなるんですか?
Visual Basic(VBA)
-
6
Access→Oracleデータ参照にはADOとパススルークエリどちらが良い?
その他(データベース)
-
7
ACCESS ADOでupdateが効かない
その他(データベース)
-
8
ADO オブジェクトの渡し方
Visual Basic(VBA)
-
9
レコードセット(ADO.Recordset)で処理レコードは何番目?
Visual Basic(VBA)
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
SQLの速度をあげるには・・・
Visual Basic(VBA)
-
12
【Oracle】ADOでSELECT * FROM ・・・・ を実行すると処理が遅いんです
その他(データベース)
-
13
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
14
新規レコード行を非表示にしたい
Access(アクセス)
-
15
AccessでのリンクテーブルとADO等の使い分け
Access(アクセス)
-
16
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
17
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
18
DAOのTableDefs(TblName").ConnectはADOでは"
その他(データベース)
-
19
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
20
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【続続】Access2002で連番のつ...
-
accsessで顧客コードで氏名を呼...
-
Access2000 更新のタイミング?
-
Access クロス集計クエリについて
-
顧客IDを入力すると顧客名や住...
-
Excel 2019 のピボットテーブル...
-
Accessで、固定アルファベット+...
-
Accessのクエリでデータの入力...
-
ACCESS検索★ある文字を複数のフ...
-
Oracle 2つのDate型の値の差を...
-
Accessでテーブル名やクエリ名...
-
Countと受付状態の表示に...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
再計算って出来ますか?
-
カウントが出来ません
-
【Access】フォームで自動計算...
-
Accessのフィールド数が255しか...
-
下記の事を行うSQLがわかりませ...
-
OCNのwebメールを開くとき、シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accsessで顧客コードで氏名を呼...
-
【続続】Access2002で連番のつ...
-
Access クロス集計クエリについて
-
Access2000 更新のタイミング?
-
Access フォームのデータがテー...
-
Access IF文でテーブルに存在し...
-
ADOでレコードを閉じるタイミン...
-
Access VBAでクエリーのレコー...
-
顧客IDを入力すると顧客名や住...
-
シングルクォーテーションとダ...
-
ワードでの単純作業の効率化に...
-
ACCESS で マクロの中でフィ...
-
Access 縦(行)のデータを横(列)...
-
データベースの1要素に複数デー...
-
ワードで保存するファイル名の...
-
Access2000 単票フォーム上の...
-
結合
-
Access 既に開いているフォー...
-
Accessでの顧客管理DB作成方法...
-
SQL エクセルシート別の項目...
おすすめ情報