powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не могу получить значение выходного параметра SP
9 сообщений из 9, страница 1 из 1
Не могу получить значение выходного параметра SP
    #32468064
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ALTER PROCEDURE dbo.зфКопияЧерт
@NEWORDER nvarchar( 50 ),
@NHL int,
@STRN nvarchar( 50 ),
@NAMED nvarchar( 250 ),
@NW real,
@CMNT nvarchar( 250 ),
@QNT smallint,
@DRAFTID int OUTPUT

As
set nocount on
INSERT INTO dbo.tDrafts
                      (NumOrder, StrNum, NumHighLevel, NameDraft, NormWork, Comment, Quantity)
VALUES     (@NEWORDER, @STRN, @NHL, @NAMED, @NW, @CMNT, @QNT)
select @DRAFTID = SCOPE_IDENTITY()
return SCOPE_IDENTITY()


cmd.Parameters.Refresh
...
cmd.Parameters("@DRAFTID") = t
cmd.Execute
Debug.Print cmd.Parameters("@DRAFTID")
Debug.Print cmd.Parameters("@RETURN_VALUE")
печатают в окне отладки значение t и "" соответственно.

Где собака зарылась?

В QA вроде-бы все нормально возвращается...
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468072
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A какой у тебя connection?
Учти, что cmd.Parameters.Refresh не работает ,если используется CurentProject.Connection. И вообще,cmd.Parameters.Refresh лучше не использовать.
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468073
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гетц, т.2, стр. 235В Access 2000 метод Refresh не работал со стандартным подключением проекта - CurrentProject. В Access 2002 этот недостаток устранен.
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468079
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал заполнение параметров через createParameter

В частности,
Set prm = cmd.CreateParameter("@DRAFTID", adInteger, adParamOutput)
cmd.Parameters.Append prm

Тот же мячик :(
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468112
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, попробовал вот:
Код: plaintext
1.
2.
3.
4.
ALTER PROCEDURE СохраненнаяПроцедура1
@parameter1 int OUTPUT
AS
SET NOCOUNT ON
select @parameter1 =  123 

и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub aaa()
Dim cmd As New adodb.Command
cmd.CommandText =  "СохраненнаяПроцедура1" 
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = CurrentProject.Connection
cmd.Parameters.Refresh
Debug.Print cmd.Parameters.Count
Debug.Print cmd.Parameters( 0 ).Name
Debug.Print cmd.Parameters( 1 ).Name
cmd.Execute
Debug.Print cmd.Parameters( 1 ).Value
End Sub


результат:

aaa
2
@RETURN_VALUE
@parameter1
123

Т.е. не работает именно SCOPE_IDENTITY(), судя по всему. @@IDENTITY дает то же самое...

Продублирую-ка в bid=1...
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468228
Я такие штуки отлаживал, когда ещё не было Access 2002, и поэтому никогда не пользовался в таких случаях методом .Refresh, ибо сразу понял, что в через CurrentProject.Connection он корректно будет работать, видимо, только в следующей жизни :).

Вообще, учитывая, что CurrentProject.Connection в ADP - это "слоёный пирог" из двух ADO-провайдеров - MSDataShape и MSSQL (любой может в этом убедиться, заглянув в значение свойства CurrentProject.Connection.ConnectionString), не следует удивляться тому, что при доступе к базе данных через CurrentProject.Connection что-то работает "как-то не так".

Так что я советую .Refresh всё же не пользоваться, а заполнять коллекцию параметров "вручную". По крайней мере, так ни с одной процедурой у меня никаких проблем с передачей параметров как "туда", так и "оттуда", включая возвращаемое RETURN значение, не было - но это только после того, как изрядно попотел над отладкой: о разных тонкостях мне не у кого было спросить.

Одной из таких "тонкостей" является следующая: небезразличным является порядок, в котором параметры вами добавляются в коллекцию .Parameters, в частности, критически важным является то, чтобы в первую очередь обязательно был добавлен параметр для возвращаемого RETURN значения, вот примерно так (привожу самый наглядный пример из работающей базы данных - процедура через OUTPUT-параметр возвращает "очередной" номер для вновь создаваемого платёжного поручения, а через RETURN может возвращать некую служебную информацию, но в конкретном случае у меня ничего не возвращает):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    'порядок присоединения должен совпадать с порядком следования параметров в процедуре'
    
    'Этот параметр добавлять обязательно в первую очередь!'
    cmd.Parameters.Append cmd.CreateParameter( "RETURN_VALUE" , adInteger, adParamReturnValue)
    
    cmd.Parameters.Append cmd.CreateParameter( "Плательщик" , adInteger, adParamInput, , Плательщик)
    cmd.Parameters.Append cmd.CreateParameter( "ВидПП" , adVarChar, adParamInput,  3 , ВидПП)
    cmd.Parameters.Append cmd.CreateParameter( "Номер" , adInteger, adParamOutput)

Строку "RETURN_VALUE", похоже, можно заменить на любую другую - имеет значение позиция параметра, а не его имя.
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468293
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался.
На добавление в tDrafts висел триггер, в котором стояло Commit Trans. Убрал эту строку - все заработало... Заяем ее туда воткнул - не знаю...
Когда ж я хоть немножко научусь cкуелю этому...
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468715
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гетц, т.2, стр. 235В Access 2000 метод Refresh не работал со стандартным подключением проекта - CurrentProject. В Access 2002 этот недостаток устранен.
Вранье. Работает, но не на всех к-х. Везде работает только
cmd.parameters.append cmd.createparameter
...
Рейтинг: 0 / 0
Не могу получить значение выходного параметра SP
    #32468818
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам недавно писал об этом:\r
.....\r
\r
Если запрос типа UPDATE с параметрами, то параметров в запросе не видать, а Refresh благополучно очищает коллекцию параметры когда их добавляешь через .Append prm\r
.... токо я не знал что эти приколы могут быть связаны с объектом CurrentProject.Connection
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не могу получить значение выходного параметра SP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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