Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Хранимая процедура / 17 сообщений из 17, страница 1 из 1
17.10.2005, 16:55:43
    #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
17.10.2005, 17:02:57
    #33328709
t
t
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Видимо, SET NOCOUNT ON в процедуру
...
Рейтинг: 0 / 0
17.10.2005, 17:06:21
    #33328717
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Cм. FAQ:
Microsoft SQL Server
Transact-SQL
Проблема с возвращением рекордсета из хранимой процедуры:
SET NOCOUNT ON
...
Рейтинг: 0 / 0
17.10.2005, 18:31:34
    #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
17.10.2005, 18:38:16
    #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
18.10.2005, 09:46:22
    #33329516
strizzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
2guest1111

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

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

2Melkiades

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

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

Что за голословные заявления? Объяснитесь, пожалуйста.
За многие годы использования данной конструкции не видел ни одного глюка.
А вот при rs.Open - видел неоднократно.
...
Рейтинг: 0 / 0
18.10.2005, 12:13:00
    #33330040
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
А я - наоборот. И на форуме это обсуждалось. В поиск.
...
Рейтинг: 0 / 0
18.10.2005, 12:24:18
    #33330099
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Слазил сам в поиск и не нашел подтверждения своим словам. Похоже, у Open и Execute есть какие-то индивидуальные нюансы. Кто-то лучше изучил Open, кто-то Execute. Дело вкуса.
...
Рейтинг: 0 / 0
18.10.2005, 12:26:49
    #33330103
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Так приведите пример, при котором cmd.execute сглючит.
...
Рейтинг: 0 / 0
18.10.2005, 12:52:29
    #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
18.10.2005, 13:04:06
    #33330238
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
Так приведите пример, при котором cmd.execute сглючит.
Execute давно не использую, поэтому примеров, тем более глючащих, нет.
...
Рейтинг: 0 / 0
18.10.2005, 14:43:02
    #33330584
guest1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимая процедура
strizzz2guest1111

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


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