powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение ХП
4 сообщений из 4, страница 1 из 1
Выполнение ХП
    #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
Выполнение ХП
    #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
Выполнение ХП
    #34179787
strelok47
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как после выполнения процедуры, результат-рекордсет вставить на лист?
...
Рейтинг: 0 / 0
Выполнение ХП
    #34182677
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
CopyFromRecordset
ну или есть желание, то
Код: plaintext
1.
2.
While not rs.EOF
...
End While
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выполнение ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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