![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как используя BDE и MS SQL Server получать RAISEROR('Err',10) [D5, D6, D7, MSSQL]
incm © (2006-08-17 18:25:00)В триггере делается проверка и выдается информационное сообщение. И нужно что бы его увидел пользователь на клиенте. Но BDE выдает только ошибки с высоким severity level, но в данном случае ошибки нет и транзакция успешно завершается. Поэтому RAISERROR с высоким severity level не катит.
Нужно что бы и сообщение выдалось и нормально завершилась транзакция и BDE это правильно обработал.
incm (2006-08-18 19:31:00) [1]
> sniknik
Собственно с триггером ничего и не получилось описаными способами
sniknik (2006-08-18 16:21:00) [2]блин, не путайте человека, тригер это не процедура и не скрипт, который вами и выполняется, он выполняется в другом пространстве.
Dok (2006-08-18 15:29:00) [3]http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=92662#676355
sniknik (2006-08-18 15:01:00) [4]> sniknik как-то приводил аж 4 варианта,
не из тригерра, а от print-ов в скрипте. в тригере сообшение как то даже смотрится странно (кому?) чтобы его рассматривать...
Danilka (2006-08-18 14:55:00) [5][15] Dok (18.08.06 14:42)
Ага, все дело в eoExecuteNoRecords.
Dok (2006-08-18 14:42:00) [6]http://community.borland.com/article/0,1410,20245,00.html
Danilka (2006-08-18 14:20:00) [7]уф. я уже и не помню, на данном рабочем месте и дельфи-то нет.
sniknik как-то приводил аж 4 варианта, если не ошибаюсь, по 2 варианта с серверным и клиентским курсором.
с серверным, кажись, и errors не пустой, и событие OnInfoMessage тоже срабатывает, а как с клиентским я уже и не помню, навскидку, но точно можно все вытащить.
incm (2006-08-18 13:57:00) [8]
> Danilka
Все что нашел:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1153197441&n=1
Ответа там нет, а только лишь утверждения что можно.
OnInfoMessage у ADOConnection не срабатывает, ADOConnection.Errors после Post тоже пустой, событие OnPostError тоже не срабатывает.
Так все же как???!!!
incm (2006-08-18 13:47:00) [9]
> clickmaker
Ну например в DBGrid. Как я поменяю логику работы грида?
Да и в любом случае менять способ добавления в таблицу не желательно, нужно все в триггерах отлавливать.
clickmaker (2006-08-18 13:19:00) [10]
> Есть много форм, где компоненты сами добавляют запись в
> таблицу
а как они это делают?
Danilka (2006-08-18 13:05:00) [11][7] incm © (18.08.06 12:07)
> ADO тоже такие ошибки не выдает.
АДО все выдает.
Только, раз это сообщение, то лучше print использовать, однако.
АДО и его понимает. Про то, как получить print в АДО, здесь периодически спрашивают, наверняка поиском можно найти ответ.
incm (2006-08-18 12:56:00) [12]
> clickmaker
Есть много форм, где компоненты сами добавляют запись в таблицу. Поэтому нельзя менять способ добавления, а нужно просто отловить момент добавления и сделать проверку + выдать сообщение.
clickmaker (2006-08-18 12:17:00) [13]
> [7] incm © (18.08.06 12:07)
если сообщение чисто информационное, то не дело вешать его на raiserror. Почему бы не написать хранимку для добавления данных, а в ней уже всю обработку?
incm (2006-08-18 12:07:00) [14]
> Dok
> а то что бде не развивается - ку?
Планируем переход на что-то другое, но пока надо решить задачу на BDE.
А кстати на ADO как можно подобное сделать? ADO тоже такие ошибки не выдает.
Dok (2006-08-18 11:34:00) [15]а то что бде не развивается - ку?
incm (2006-08-18 10:45:00) [16]
> Dok
> блин а АДО чем не угодил то?
Тем, что уже усть готовый большей проект на BDE. И переделать все на ADO достаточно проблематично.
Dok (2006-08-18 10:23:00) [17]
> В триггере делается проверка и выдается информационное сообщение.
> И нужно что бы его увидел пользователь на клиенте. Но BDE
> выдает только ошибки с высоким severity level, но в данном
> случае ошибки нет и транзакция успешно завершается. Поэтому
> RAISERROR с высоким severity level не катит.
> Нужно что бы и сообщение выдалось и нормально завершилась
> транзакция и BDE это правильно обработал.
блин а АДО чем не угодил то?
clickmaker (2006-08-17 19:04:00) [18]
> Нужно в триггере на добавление записи
а что мешает это делать хранимкой?
incm (2006-08-17 18:44:00) [19]
> clickmaker
Нужно в триггере на добавление записи.
clickmaker (2006-08-17 18:35:00) [20]делай не в триггере, а в хранимке. А сообщение через out-параметр, либо строкой, либо возвращай код, а по нему на клиенте уже грузи соотв. строку