|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Здравствуйте. Выполняю через АДО на сервере хранимую процедуру. Во время выполнения в хранимке возникает предупреждение "Повторяющийся ключ пропущен." и она отрабатывает дальше без проблем. НО несмотря на то, что это всего лишь предупреждение - в Акцессе я получаю ошибку. Кто-нибудь знает, как сделать так, чтобы АДО игнорировал такие предупреждения и вылетал только на реальных ошибках? запускаю хранимку так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
после R.open программа перекидывается на обработчик ошибок. А при пробежке по списку ошибок я вижу, что после возникновения ошибки(которое на самом деле предупреждение) процедура продолжила выполняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 10:08 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Насколько я понял субъект, то возвращается какой-то конкретный номер ошибки. Его можно отловить в обработчике ошибок (в блоке после метки ErrHandler:), либо просто поставив On Error Resume Next перед вызовом R.open cmd, , adOpenStatic, adLockOptimistic. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 10:45 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Slavinag, суть в том, что я не хочу игнорировать ошибки. Если во время работы процедуры ошибка возникла, то я у клиента отработаю её возникновение, а если возникло всего лишь предупреждение, то зачем же мне это надо? Причем главная то беда в том, что клиент считает что возникла ошибка и процедура НЕ отработала, а на самом то деле процедура выполнилась полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 11:34 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
А хранимая процедура возвращает отобранный по каким-то критериям набор записей? Который затем передаёт в АДО-рекордсет? Или - просто выполняет некие действия с данными на сервере? Почему не используется команда Код: vbnet 1.
и затем в какую-нибудь переменную не сохраняется выходной параметр процедуры Код: vbnet 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 14:36 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Диам, есть подозрение, что на сервере в процедуре нужно поставить что-то типа, чтобы Код: sql 1. 2.
А что за предупреждение то? Truncation occurs during conversion to varbinary data? Или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 14:57 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Неплохо бы ещё проверить логику самой хранимки, как именно "она отрабатывает дальше без проблем" (с). Всё ли там нормально с результирующими данными, не обрезаются ли где-нибудь текстовые поля, нет ли пропущенных записей ("Повторяющийся ключ пропущен.") - это ж-ж-ж не спроста... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 15:50 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Slavinag, в хранимке происходит добавление записей в таблицу. У таблицы сделан уникальный индекс с "Ignore Duplicate Values" = On. Т.е. дубликаты вставлены не будут, но при этом не будет возникать ошибка, а только предупреждение. И все происходит так как и задумано - на MSSQL возникает предупреждение и процедура продолжает выполняться дальше. А вот после окончания процедуры, уже на клиенте ADO вываливается с ошибкой, которая на самом деле не ошибка а предупреждение. Установка SET ANSI_WARNINGS off не спасает :( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 01:11 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Диам, И всё-же - зачем использовать для выполнения процедуры (запуска её из клиента) АДО-рекордсет, а не просто Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 08:23 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Slavinag, потому что хранимка возвращает набор данных. И я их потом читаю ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 13:45 |
|
ADO как игнорировать предупреждения в хранимой процедуре
|
|||
---|---|---|---|
#18+
Диам, То есть, в хранимке после выполнения INSERT INTO не возникает ошибок, @@ERROR = 0, но есть некое предупреждение, в результате которого в клиенте Access на открытие получившегося рекордсета в VBA возникает ошибка? Но сам набор записей при этом правильный, доступен, и дальнейшая его обработка (в клиенте) идёт без проблем? Я бы всё же попробовал разделить события. Сначала выполнить хранимку, не возвращая с её помощью набор записей в клиент. А затем уже в клиенте дал команду на открытие рекордсета с помощью обычного SELECT к той табличке, в которою хранимка добавила записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 15:30 |
|
|
start [/forum/topic.php?fid=45&msg=39173301&tid=1613900]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 314ms |
total: | 444ms |
0 / 0 |