powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO как игнорировать предупреждения в хранимой процедуре
11 сообщений из 11, страница 1 из 1
ADO как игнорировать предупреждения в хранимой процедуре
    #39172877
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Выполняю через АДО на сервере хранимую процедуру.
Во время выполнения в хранимке возникает предупреждение "Повторяющийся ключ пропущен." и она отрабатывает дальше без проблем. НО несмотря на то, что это всего лишь предупреждение - в Акцессе я получаю ошибку.

Кто-нибудь знает, как сделать так, чтобы АДО игнорировал такие предупреждения и вылетал только на реальных ошибках?

запускаю хранимку так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  
  On Error GoTo ErrHandler
  Set cmd = New ADODB.Command
  Set R = New ADODB.Recordset
  cmd.ActiveConnection = strConnADO
  cmd.CommandType = adCmdText
  cmd.CommandTimeout = TimeOut
  cmd.CommandText = sqlTxt
  R.CursorLocation = adUseClient
  IsOpen = True
  R.open cmd, , adOpenStatic, adLockOptimistic


после R.open программа перекидывается на обработчик ошибок. А при пробежке по списку ошибок я вижу, что после возникновения ошибки(которое на самом деле предупреждение) процедура продолжила выполняться.
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39172907
Фотография Slavinag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял субъект, то возвращается какой-то конкретный номер ошибки. Его можно отловить в обработчике ошибок (в блоке после метки ErrHandler:), либо просто поставив On Error Resume Next перед вызовом R.open cmd, , adOpenStatic, adLockOptimistic.
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39172983
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slavinag, суть в том, что я не хочу игнорировать ошибки. Если во время работы процедуры ошибка возникла, то я у клиента отработаю её возникновение, а если возникло всего лишь предупреждение, то зачем же мне это надо? Причем главная то беда в том, что клиент считает что возникла ошибка и процедура НЕ отработала, а на самом то деле процедура выполнилась полностью.
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39173208
Фотография Slavinag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А хранимая процедура возвращает отобранный по каким-то критериям набор записей? Который затем передаёт в АДО-рекордсет? Или - просто выполняет некие действия с данными на сервере? Почему не используется команда
Код: vbnet
1.
cmd.Execute

и затем в какую-нибудь переменную не сохраняется выходной параметр процедуры
Код: vbnet
1.
sResult = cmd.Parameters(0)

?
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39173240
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диам,

есть подозрение, что на сервере в процедуре нужно поставить что-то типа, чтобы
Код: sql
1.
2.
SET NOCOUNT on
SET ANSI_WARNINGS off 


А что за предупреждение то? Truncation occurs during conversion to varbinary data? Или что?
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39173301
Фотография Slavinag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неплохо бы ещё проверить логику самой хранимки, как именно "она отрабатывает дальше без проблем" (с). Всё ли там нормально с результирующими данными, не обрезаются ли где-нибудь текстовые поля, нет ли пропущенных записей ("Повторяющийся ключ пропущен.") - это ж-ж-ж не спроста...
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39173669
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slavinag, в хранимке происходит добавление записей в таблицу. У таблицы сделан уникальный индекс с "Ignore Duplicate Values" = On. Т.е. дубликаты вставлены не будут, но при этом не будет возникать ошибка, а только предупреждение.

И все происходит так как и задумано - на MSSQL возникает предупреждение и процедура продолжает выполняться дальше. А вот после окончания процедуры, уже на клиенте ADO вываливается с ошибкой, которая на самом деле не ошибка а предупреждение. Установка SET ANSI_WARNINGS off не спасает :(
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39173733
Фотография Slavinag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диам,

И всё-же - зачем использовать для выполнения процедуры (запуска её из клиента) АДО-рекордсет, а не просто
Код: vbnet
1.
cmd.Execute
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39174125
Диам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slavinag, потому что хранимка возвращает набор данных. И я их потом читаю
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39174363
Фотография Slavinag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диам,

То есть, в хранимке после выполнения INSERT INTO не возникает ошибок, @@ERROR = 0, но есть некое предупреждение, в результате которого в клиенте Access на открытие получившегося рекордсета в VBA возникает ошибка? Но сам набор записей при этом правильный, доступен, и дальнейшая его обработка (в клиенте) идёт без проблем?

Я бы всё же попробовал разделить события. Сначала выполнить хранимку, не возвращая с её помощью набор записей в клиент. А затем уже в клиенте дал команду на открытие рекордсета с помощью обычного SELECT к той табличке, в которою хранимка добавила записи.
...
Рейтинг: 0 / 0
ADO как игнорировать предупреждения в хранимой процедуре
    #39174816
`
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
`
Гость
ДиамУстановка SET ANSI_WARNINGS off не спасает :(тебя про два SET-а спрашивали
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO как игнорировать предупреждения в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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