Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.RecordSet / 5 сообщений из 5, страница 1 из 1
07.09.2006, 14:39
    #33971088
Just User
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.RecordSet
#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
07.09.2006, 15:07
    #33971237
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.RecordSet
возможно поможет это
If con.State=adStateOpen Then con.Close
так же с рекорсетом перед открытием
...
Рейтинг: 0 / 0
07.09.2006, 15:18
    #33971292
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.RecordSet
1. Строчку .Execute нужно убрать, выполнение происходит при .Open cmd
2. .ActiveConnection оставить одну, неважно какую.
...
Рейтинг: 0 / 0
07.09.2006, 15:26
    #33971329
Just User
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.RecordSet
А кжись я понял точно.
при закрытии Объекта Connection мой рекорсет теряет данные, т.к. активное подключение закрыто.
Так чтоли?
...
Рейтинг: 0 / 0
07.09.2006, 15:44
    #33971404
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.RecordSet
Точно =).
Чтобы рекордсет был отсоединенный, нужно открыть соединение с клиентским курсором, после открытия рекордсета сделать ActiveConnection = Nothing, а потом закрывать соединение.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.RecordSet / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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