powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Хранимая процедура
17 сообщений из 17, страница 1 из 1
Хранимая процедура
    #33328682
strizzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть элементарная хранимая процедура:

CREATE PROCEDURE dbo.get_name
AS
select Тип, Номер_контейнера from baze..main
GO

в query analyser'e работает. Но из VB не вызывается:

Private Sub Form_Load()
Set cnn = New ADODB.Connection
cnn.Open ("DSN=baze")
Set rs = New ADODB.Recordset
rs.ActiveConnection = cnn
rs.CursorLocation = adUseClient
rs.Open "select * from main", cnn, adOpenDynamic, adLockOptimistic
Set Grid.DataSource = rs
End Sub

Private Sub Command1_Click()
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sel"
Set rs = cmd.Execute

End Sub
...
Рейтинг: 0 / 0
Хранимая процедура
    #33328709
t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t
Гость
Видимо, SET NOCOUNT ON в процедуру
...
Рейтинг: 0 / 0
Хранимая процедура
    #33328717
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cм. FAQ:
Microsoft SQL Server
Transact-SQL
Проблема с возвращением рекордсета из хранимой процедуры:
SET NOCOUNT ON
...
Рейтинг: 0 / 0
Хранимая процедура
    #33328975
strizzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправил хр. проц. в квери аналайзери опять все нормально:

CREATE PROCEDURE dbo.sel
AS
SET NOCOUNT ON
select Тип, Номер_контейнера from baze..main
GO

Private Sub Form_Load()
Set cnn = New ADODB.Connection
cnn.Open ("DSN=baze")
Set rs = New ADODB.Recordset
rs.ActiveConnection = cnn
rs.CursorLocation = adUseClient
rs.Open "select * from main", cnn, adOpenDynamic, adLockOptimistic
Set Grid.DataSource = rs
End Sub

но при вызове из программы ничего не меняется:

Private Sub Command1_Click()
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sel"
Set rs = cmd.Execute
Set Grid.DataSource = rs
End Sub
...
Рейтинг: 0 / 0
Хранимая процедура
    #33328988
guest1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strizzzпоправил хр. проц. в квери аналайзери опять все нормально:

CREATE PROCEDURE dbo.sel
AS
SET NOCOUNT ON
select Тип, Номер_контейнера from baze..main
GO

Private Sub Form_Load()
Set cnn = New ADODB.Connection
cnn.Open ("DSN=baze")
Set rs = New ADODB.Recordset
rs.ActiveConnection = cnn
rs.CursorLocation = adUseClient
rs.Open "select * from main", cnn, adOpenDynamic, adLockOptimistic
Set Grid.DataSource = rs
End Sub

но при вызове из программы ничего не меняется:

Private Sub Command1_Click()
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sel"
Set rs = cmd.Execute
Set Grid.DataSource = rs
End Sub

А какая ошибка выдается
если переписать обработчик так:
Private Sub Command1_Click()
On Error GoTo Err
Set cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sel"
Set rs = cmd.Execute
Set Grid.DataSource = rs
Err:
MsgBox Err.Description
End Sub[/quot]
...
Рейтинг: 0 / 0
Хранимая процедура
    #33329516
strizzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2guest1111

никакой ошибки нет, просто пустой меседжбокс. :(
...
Рейтинг: 0 / 0
Хранимая процедура
    #33329560
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложите свой проект. У меня все работает.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33329614
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так все-таки ошибка есть, коли появляетвся месажбокс?
...
Рейтинг: 0 / 0
Хранимая процедура
    #33329665
strizzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2HandKot

Просто пустой меседжбокс

2Melkiades

как такого проекта собственно и нет пока.
одна таблица, одна хранимая процедура, а код весь, что есть.

полностью таблица открывается, но она открывается запросом, а хранимая процедура такое ощущение, что просто не вызывается. :(, т.к. я уже говорил, что кверианалайзере работает.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33329996
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, опять те же грабли... Пора уже это в FAQ повесить...
Не используйте Set rs = cmd.Execute
Используйте rs.Open cmd, , adOpenStatic, adLockOptimistic
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330006
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Не используйте Set rs = cmd.Execute

Что за голословные заявления? Объяснитесь, пожалуйста.
За многие годы использования данной конструкции не видел ни одного глюка.
А вот при rs.Open - видел неоднократно.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330040
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я - наоборот. И на форуме это обсуждалось. В поиск.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330099
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слазил сам в поиск и не нашел подтверждения своим словам. Похоже, у Open и Execute есть какие-то индивидуальные нюансы. Кто-то лучше изучил Open, кто-то Execute. Дело вкуса.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330103
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так приведите пример, при котором cmd.execute сглючит.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330197
strizzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в итоге так заработало. правда пришлось закрыть и открыть заново рекордсет.

может, кстате, из-за етого cmd.execute не работать?

Private Sub Form_Load()
Set cnn = New ADODB.Connection
cnn.Open ("DSN=baze")
Set rs = New ADODB.Recordset
rs.ActiveConnection = cnn
rs.CursorLocation = adUseClient
rs.Open "select * from main", cnn, adOpenDynamic, adLockOptimistic
Set Grid.DataSource = rs
rs.Close
Set rs = Nothing
End Sub

Private Sub Command1_Click()
Set cmd.ActiveConnection = cnn
Set rs = New ADODB.Recordset
rs.ActiveConnection = cnn
rs.CursorLocation = adUseClient
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sel"
rs.Open cmd, , adOpenDynamic, adLockOptimistic
Set Grid.DataSource = rs
End Sub
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330238
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так приведите пример, при котором cmd.execute сглючит.
Execute давно не использую, поэтому примеров, тем более глючащих, нет.
...
Рейтинг: 0 / 0
Хранимая процедура
    #33330584
guest1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
strizzz2guest1111

никакой ошибки нет, просто пустой меседжбокс. :(
Я кстати, там облажался - перед меткой Err: надо поставить Exit Sub
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Хранимая процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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