powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.RecordSet
5 сообщений из 5, страница 1 из 1
ADODB.RecordSet
    #33971088
Just User
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
#VBA
'Excel app
Подскажите плиз.
имею функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Public Function RunProcA(ByVal proc As String, ByRef params() As ADODB.Parameter) As ADODB.recordSet

Dim ResultSet As New ADODB.recordSet
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
On Error GoTo ErrHandler:
GetConnnectionStr
With con
.ConnectionString = GetConnstr
.Open
End With
For Each p In params
      cmd.Parameters.Append p
Next p

With cmd
    .ActiveConnection = con
    .CommandText = proc
    .CommandType = adCmdStoredProc
    .Execute
End With

Set RunProcA = New ADODB.recordSet
With RunProcA
    .ActiveConnection = con
    .Open cmd
End With
con.Close
Set cmd = Nothing
Set con = Nothing
Set ResultSet = Nothing

 Exit Function
'Exeptions
ErrHandler:
            MsgBox Error & chr( 10 ) & Err.Number
End Function
Она находится в классе DA_sql
В форме вызываю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub bt_Refresh_Click()
Dim Result As New ADODB.recordSet
Dim Data As New DA_sql
Dim p() As New ADODB.Parameter
Dim list() As String
With Data
    .Database = "master"
    .Password = ""
    .Server = Me.tb_Server.Value
    .User = "sa"
End With

Set Result = Data.RunProcA("sp_Databases", p())

End Sub
выдает ошибку "Операция недопускается если объект закрыт"
Хочу чтоб можно было в форме вызывать эту функцию и получать объект RecordSet
Или всё таки он не будет работать пока ActiveConnection=Nothing
...
Рейтинг: 0 / 0
ADODB.RecordSet
    #33971237
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
возможно поможет это
If con.State=adStateOpen Then con.Close
так же с рекорсетом перед открытием
...
Рейтинг: 0 / 0
ADODB.RecordSet
    #33971292
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Строчку .Execute нужно убрать, выполнение происходит при .Open cmd
2. .ActiveConnection оставить одну, неважно какую.
...
Рейтинг: 0 / 0
ADODB.RecordSet
    #33971329
Just User
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кжись я понял точно.
при закрытии Объекта Connection мой рекорсет теряет данные, т.к. активное подключение закрыто.
Так чтоли?
...
Рейтинг: 0 / 0
ADODB.RecordSet
    #33971404
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно =).
Чтобы рекордсет был отсоединенный, нужно открыть соединение с клиентским курсором, после открытия рекордсета сделать ActiveConnection = Nothing, а потом закрывать соединение.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.RecordSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]