Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение ХП / 4 сообщений из 4, страница 1 из 1
04.12.2006, 08:52:21
    #34173635
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП
Добрый всем день.
Возникла проблема при выполнении хранимой процедуры

Исходные данные:

в модуле
Код: plaintext
1.
2.
3.
Public Sub RunReport()
    Call rpt.CreateReport(rID)
End Sub

в модуле класса
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Private WithEvents cn As ADODB.Connection

'процедура формирования отчета
Public Sub CreateReport(id As String)
    Dim cmd As ADODB.Command
    
    On Error GoTo EH
    
    'открываем конекшн
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Моя строка подключения" 'строка соединения
    cn.CursorLocation = adUseClient
    cn.CommandTimeout =  0 
    cn.Open
    
    Set cmd = New ADODB.Command
    Dim par As ADODB.Parameter
    
    'создаем объект комманд
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = cn
    cmd.CommandTimeout =  0 
    cmd.CommandType = adCmdStoredProc
    
    'создаем и добавляем параметр
    Set par = cmd.CreateParameter("@id", adVarChar, adParamInput,  100 , id)
    'par.Value = id
    cmd.Parameters.Append par

    'запускаем асинхронное выполнение
    cmd.CommandText = "dbo.Моя_ХП"
    cmd.Execute , , adAsyncExecute           'adCmdStoredProc + adAsyncFetch + adAsyncFetchNonBlocking + adAsyncExecute
    
    Exit Sub
EH:
    'обработчик ошибки
    CloseAll
End Sub

'запрос выполнился
Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    If pError Is Nothing Then
        MakeReport pRecordset
    Else
        ThisWorkbook.Worksheets( 1 ).Range("A1") = pError
        ThisWorkbook.Worksheets( 1 ).Name = "Done"
        CloseAll
    End If
End Sub
на сервере
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
DECLARE PROCEDURE dbo.Моя_ХП() AS
BEGIN
  SET NOCOUNT ON
  SET ANSI_WARNINGS OFF

  ...
END
GO

В событии cn_ExecuteComplete вылетает с ошибкой Operation was canceled by user
В QA ХП отрабатывает нормально.

Что можете посоветовать?
Спасибо

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
04.12.2006, 12:59:24
    #34174465
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП
Вроде решил

ошибка в определении объекта ADODB.Command
объявил НЕ в теле процедуры
Код: plaintext
Dim cmd As ADODB.Command
А в модуле класса
Код: plaintext
Private cmd As ADODB.Command
проверяю

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
06.12.2006, 11:37:05
    #34179787
strelok47
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП
А как после выполнения процедуры, результат-рекордсет вставить на лист?
...
Рейтинг: 0 / 0
07.12.2006, 11:54:08
    #34182677
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП
Код: plaintext
CopyFromRecordset
ну или есть желание, то
Код: plaintext
1.
2.
While not rs.EOF
...
End While
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение ХП / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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