Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как используя 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-параметр, либо строкой, либо возвращай код, а по нему на клиенте уже грузи соотв. строку


Наверх

Титульная страница Поиск, карта сайта Написать письмо