Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO, не приходит ошибка с SQL-Server. / 9 сообщений из 9, страница 1 из 1
12.01.2005, 12:27:16
    #32860847
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
Здраствуйте!

Процедура на SQL2k:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE PROCEDURE dbo.ALL_LBX_FindMaterialNonStandard
AS
SET NOCOUNT ON
SET XACT_ABORT ON

BEGIN TRANSACTION
DECLARE @ERRORMESSAGE AS NVARCHAR( 4000 )
/* * текст процедуры выполняет  1  селект, @@ROWCOUNT больше  50  */
IF @@ROWCOUNT >  50 
	BEGIN
	SET @ERRORMESSAGE = N'Слишком много строк! Уточните критерии поиска.'
	RAISERROR  44445  @ERRORMESSAGE
	ROLLBACK TRANSACTION
	RETURN
	END
COMMIT TRANSACTION
GO
Запускаю в QA - ошибка приходит как положено.

Запускаю на VB:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set pblCom = New ADODB.Command
Set prvRst = New ADODB.Recordset

pblCom.ActiveConnection = Con
pblCom.ActiveConnection.CursorLocation = adUseClient
pblCom.CommandText = "dbo.ALL_LBX_FindMaterialNonStandard"
pblCom.CommandType = adCmdStoredProc
pblCom.Parameters.Append pblCom.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue)

Set prvRst = pblCom.Execute
Подождал, подождал... ошибка так и не пришла. Коллекцию Errors на конекшне обновил - ничего. Кто знает в чем тут может быть дело?
...
Рейтинг: 0 / 0
12.01.2005, 12:36:28
    #32860875
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
2 MVN
С RAISERROR у Аксеса проблемы. Я делал такие вещи через оутпут параметры.
...
Рейтинг: 0 / 0
12.01.2005, 12:43:22
    #32860893
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
Оутпут нельзя, вся схема выстроена на генерации ошибок.

Забыл сказать что рекордсет приватный и объявлен через withevents. Имеются два события на fetch_complette & progress соответственно.
...
Рейтинг: 0 / 0
12.01.2005, 13:25:56
    #32861031
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
Нашел причину. при NextRecordset ошибка приходит. Тут где-то уже проскакивало такое.
...
Рейтинг: 0 / 0
12.01.2005, 16:42:31
    #32861677
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
а если в ХП у RETURN поставить возвращаемое значение ?
...
Рейтинг: 0 / 0
13.01.2005, 07:08:50
    #32862303
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
yunikiа если в ХП у RETURN поставить возвращаемое значение ?Если это в продолжение про оутпут, то мне это то же не подойдет, т.к. механизм на VB одинаков для их обоих.
А если нет, то вот причина моей проблеммы.
...
Рейтинг: 0 / 0
13.01.2005, 16:56:39
    #32863702
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
Это не продолжение про output.

Вот в статье на sql.ru ADO и SQL Server. Руководство разработчика .
говорится , что это все должно работать :

Код: 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.
Коды возврата и выходные параметры хранимых процедур
Хранимые процедуры могут содержать входные и выходные параметры и возвращать значения. Например, следующая хранимая процедура myProc содержит выходной параметр @ioparm и возвращает значение  99 .
CREATE PROCEDURE myProc @ioparm int OUTPUT AS
SELECT name FROM sysusers WHERE uid <  2 
SELECT @ioparm =  88 
RETURN  99 
Входной параметр для хранимой процедуры можно определить через объект Parameter. Выходной параметр и возвращенное значение могут также быть определены через объект Parameter, но действительные значения обоих этих параметров не будут возвращены до тех пор, пока объект Recordset не будет полностью выбран (в смысле выборки данных) или пока объект Recordset не будет закрыт. 
ADO следующий:
Dim Cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim param As Parameter
Cmd.ActiveConnection = "DSN=pubs;UID=sa"
Cmd.CommandText = "myproc"
Cmd.CommandType = adCmdStoredProc
' Set up parameters.
Set param = Cmd.CreateParameter("Return", adInteger, adParamReturnValue, ,  0 )
Cmd.Parameters.Append param
Set param = Cmd.CreateParameter("Output", adInteger, adParamOutput, ,  0 )
Cmd.Parameters.Append param
Set rs = Cmd.Execute
If Not rs.EOF And Not rs.BOF Then
Debug.Print rs( 0 )
rs.Close
End If
Debug.Print Cmd( 0 ) ' The return code
Debug.Print Cmd( 1 ) ' The Output parameter
Для хранимой процедуры myProc требуются два параметра: выходной параметр для сохранения возвращенного значения и выходной параметр @ioparam. В этом примере сначала создаются два параметра: Return и Output. Параметр Return создается как тип adParamReturnValue и имеет тип данных - adInteger, что соответствует integer. Параметр Output - adParamReturnValue для выходного параметра и тоже имеет тип данных integer. Так как оба параметра имеют тип integer, то нет необходимости определять длину данных.
После добавления параметров и выполнения запроса создается набор записей. Затем объект Recordset закрывается, чтобы получить код возврата и выходной параметр.
...
Рейтинг: 0 / 0
13.01.2005, 18:06:36
    #32863901
Slider_spb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
А где обработка по ON Error ?
Если ее добавить в коде, то в err.number будет номер ошибки, а в err.discription - ее описание
...
Рейтинг: 0 / 0
14.01.2005, 08:06:09
    #32864273
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не приходит ошибка с SQL-Server.
yunikiЭто не продолжение про output...
Код: plaintext
1.
Debug.Print Cmd( 0 ) ' The return code
Debug.Print Cmd( 1 ) ' The Output parameter
...
В чем разница для VB, если в процедуре я вручную конфигурирую оба параметра?
Это все работает, я с этим не спорю. Но для моей БД это не подходит. Видимо придется мириться с особенностями АДО.

Slider_spbА где обработка по ON Error ?
Если ее добавить в коде, то в err.number будет номер ошибки, а в err.discription - ее описаниеON Error естественно есть, просто я его не указал.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO, не приходит ошибка с SQL-Server. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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