Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2013, 01:53   #1
absxx
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 12
По умолчанию БД. RaisError

имеется триггер
Код:
IF((SELECT Количество FROM inserted WHERE Артикул=(SELECT Артикул from inserted))> (SELECT КоличествоС FROM Товары WHERE Артикул=(SELECT Артикул from inserted)))
	BEGIN
	RAISERROR('Продажа невозможна. Отсутствует необходимое количество товара на складе',16, -1)
	ROLLBACK TRANSACTION
    END
Пытаюсь вывести сообщение в приложении, но безрезультатно. Может кто подскажет?

Код:
 
with DataModule2.HLPQuery do
    begin
    try
      Close;
      SQL.Clear;
      SQL.Add('exec ДобПродажи '+PostC+','+Art+', '''+Date+''','+Koll+', '''+DateOp+''','+SummOp);
      ExecSQL;
       except
    on E: Exception do
    Memo2.Text:=(E.message);
    end;
absxx вне форума Ответить с цитированием
Старый 24.12.2013, 03:31   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

если правильно помню то под try его не поймать
eval вне форума Ответить с цитированием
Старый 24.12.2013, 09:26   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
под try его не поймать
Вообще-то ловиться должен. По крайней мере от Оракла я ловил.
Может и нет совсем того исключения? Проверить не сложно - убрать IF оставив вызов исключения и все.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 09:26   #4
absxx
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
если правильно помню то под try его не поймать
А как можно поймать?)
absxx вне форума Ответить с цитированием
Старый 24.12.2013, 09:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как можно поймать?)
Все ты правильно делаешь. Попробуй сделать что я сказал и проверь.
Хотя... Ты триггер вызываешь из процедуры. так? Возможно вывод ошибки гасится в ней, потому к тебе и не доходит.
Опиши raise попробуй в самой процедуре.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 09:28   #6
absxx
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вообще-то ловиться должен. По крайней мере от Оракла я ловил.
Может и нет совсем того исключения? Проверить не сложно - убрать IF оставив вызов исключения и все.
Не совсем понятно

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вообще-то ловиться должен. По крайней мере от Оракла я ловил.
Может и нет совсем того исключения? Проверить не сложно - убрать IF оставив вызов исключения и все.
В триггере самом?

Дело в том, что я специально проверял работу триггера. В самой среде он работает и ошибка выходит. В делфи он тоже работает, но не могу вывести ошибку.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Все ты правильно делаешь. Попробуй сделать что я сказал и проверь.
Хотя... Ты триггер вызываешь из процедуры. так? Возможно вывод ошибки гасится в ней, потому к тебе и не доходит.
Опиши raise попробуй в самой процедуре.
У меня триггер срабатывает толбко при определенной ситуации. Он точно рабочий). В самой среде, как я говорил, он срабатывает на ура)

Последний раз редактировалось Stilet; 24.12.2013 в 10:56.
absxx вне форума Ответить с цитированием
Старый 24.12.2013, 10:57   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В самой среде он работает и ошибка выходит.
Какой среде?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 12:52   #8
absxx
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Какой среде?
Ms SQL Server
absxx вне форума Ответить с цитированием
Старый 24.12.2013, 13:42   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну попробуй как я сказал вынести отлов исключения из триггера в процедуру, возможно как посредник процедура гасит исключение триггера, не передавая ее в твою прогу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2013, 18:43   #10
absxx
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 12
По умолчанию

На самом деле, решение проблемы было куда проще. Достаточно было добавить в хранимую процедуру
Код:
SET NOCOUNT ON
. Тема закрыта)
absxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RAISERROR В DELPHI Lisi4ka БД в Delphi 3 14.04.2009 15:22