powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вызвать хранимую процедуру из VBA
15 сообщений из 15, страница 1 из 1
Как вызвать хранимую процедуру из VBA
    #37712964
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемое сообщество подскажите пожалуйста что я делаю не так.

Итак, имеем VBA 7.0, сервер MSSQL с хранимой процедурой, которая выдает результат в виде таблицы. Надо этот результат с помощью макроса вытащить, произвести некие манипуляции и затем положить на ActiveSheets в Excel.

Вот таким образом я пытаюсь вызвать хранимую процедуру на сервере и получить результат.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub SummaryReport()
    Dim conn As New ADODB.Connection
    conn.ConnectionString = "Provider=SQLOLEDB.1;Password=abc;Persist Security Info=True;User ID=UserID;Data Source=servername;Initial Catalog=DB_Name;"
    conn.Provider = "SQLOLEDB.1"
    conn.CommandTimeout = 6000
    conn.Open
     
    Dim rst As New ADODB.Recordset
    rst.ActiveConnection = conn
    Set rst = conn.Execute("EXEC SomeStoreProcedure @pMonth = 12, @pYear = 2011")
    
      
    
    Call ActiveSheet.Range("A2").Cells(1, 1).CopyFromRecordset(rst)


    conn.Close
    Set conn = Nothing
    Set rst = Nothing
End Sub




Однако на строчке
Код: vbnet
1.
Call ActiveSheet.Range("A2").Cells(1, 1).CopyFromRecordset(rst)


выдается ошибка Run-time error '3704'.


Если же мы вместо хранимой процедуры напишем запрос к какой-либо талице:
Код: vbnet
1.
2.
3.
 Set rst = conn.Execute("SELECT TOP 10 * FROM MyTable")
      
 Call ActiveSheet.Range("A2").Cells(1, 1).CopyFromRecordset(rst)



то VBA ругаться перестает и результаты попадают на лист Excel.
В чем может быть дело и как мне добиться вызова хранимой процедуры?
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713053
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: _ч_

А был-ли мальчик? (с)

Покажи текст хранимой процедуры

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713054
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в процедуре первой строкой написано "set nocount on"?
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713114
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Она достаточно большая, точно ли Вы хотите ее увидеть?

Shocker.Pro в процедуре первой строкой написано "set nocount on"?
Нет, только:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713116
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так добавь, скорее всего в этом дело
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713187
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

добавил, дело не в этом.
Попробовал запустить другую процедуру (простую, без временных таблиц, джойнов и т.п.), все работает. Видимо дело в процедуре.
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713208
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, процедура возвращает какие-то варнинги помимо рекордсета
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713244
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_ч_Игорь Горбонос,

Она достаточно большая, точно ли Вы хотите ее увидеть?

Shocker.Pro в процедуре первой строкой написано "set nocount on"?
Нет, только:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON

_ч_Shocker.Pro,

добавил, дело не в этом.
Попробовал запустить другую процедуру (простую, без временных таблиц, джойнов и т.п.), все работает. Видимо дело в процедуре.
он её не туда добавил

в код ХП нужно, а не в скрипт который сгенерила студия
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713250
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112он её не туда добавил

в код ХП нужно, а не в скрипт который сгенерила студия
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
--
-- =============================================
ALTER procedure [dbo].[haba_haba] 
	@YearPP smallint,
	@MonthPP tinyint
as
begin
	set nocount on
...
end
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713254
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112он её не туда добавил

в код ХП нужно, а не в скрипт который сгенерила студиякстати вероятно.
Тогда к автору: если процедура большая, приведи для начала ее первые 20 строк )
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713279
Фотография S.PR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADODB.Command?
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713280
_ч_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, qwerty112 прав.
Добавил в тело процедуры SET NOCOUNT ON и все заработало.
Спасибо
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713313
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_ч_Да, qwerty112 прав.Силён хрустальный шар!
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713347
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрустальный шар такой хрустальный .)
...
Рейтинг: 0 / 0
Как вызвать хранимую процедуру из VBA
    #37713354
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyХрустальный шар такой хрустальный .)я о том, что qwerty112 догадался, что set nocount on автор не туда вписал )
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вызвать хранимую процедуру из VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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