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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2007, 14:12   #1
Radost
 
Регистрация: 31.05.2007
Сообщений: 9
Печаль Не работает try except!!!

Добрового всем времени суток! Помогите, пожалуйста! Подскажите, где я не права.
Есть БД-Access, пишу приложение к ней. Мне нужно в таблицу с одним ключевым полем(nam) вставить новую строку. Делаю следующим образом:ставлю кнопку "новая строка". Для нее определяю процедуру:
Table1.Open;
Table1.Edit;
Table1.Insert;
Далее вводим данные и нажимаем на кнопку "Сохранить":
try
Table1.Post;
except
On E:EDatabaseError do
if E.message='Key violation' then MessageDlg('Такая точка уже существует!',mtError,[mbOk],0);
end;
Но при выполнении программы в except даже не заходит, а вылетает и выдает свое сообщение с тем же смыслом.
Где ошибка?
Radost вне форума Ответить с цитированием
Старый 31.05.2007, 15:28   #2
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Насколько мне известно в try записывается, то что мы хотим проверить, т.е. try необходимо написать перед Table1.insert
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 31.05.2007, 17:40   #3
Radost
 
Регистрация: 31.05.2007
Сообщений: 9
По умолчанию

А что не правильно в следующей конструкции:
try
QueryIns.SQL.Clear;
QueryIns.SQL.Add('INSERT INTO доход(Точка,Дата,Сумма) ');
QueryIns.SQL.Add('VALUES ("'+TochkaName+'",#'+newDate+'#,'+S um+')');
QueryIns.ExecSQL;
ShowMessage('Данные сохранены!');
Summa.Text:='';
except
On e : EADOError do
if E.message='Key violation' then
MessageDlg('Такая точка уже существует!',mtError,[mbOk],0);
end;
Radost вне форума Ответить с цитированием
Старый 31.05.2007, 20:54   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

если ты нажимаешь F9 и возникает ошибка, то так и будет. попробуй как обычную прогу в проводнике запустить...
pu4koff вне форума Ответить с цитированием
Старый 31.05.2007, 21:10   #5
Radost
 
Регистрация: 31.05.2007
Сообщений: 9
По умолчанию

Вот в этом случае все проходит, и при F9, и если просо запустить 'exe':

try
begin
Table1.Post;
ShowMessage('Данные о точке '+DBEdit13.Text+' записаны');
DBEdit13.Visible:=false;
ComboToch.ListSource.DataSet.Active :=false;
ComboToch.ListSource.DataSet.Active :=true;
ComboToch.Visible:=true;
Form2.ActiveControl:=Form2.ComboToc h;
end
except
On E:EDatabaseError do
begin
e.message:='Такая точка уже существует!';
messageDlg(e.message, mtError,[mbOK],0);
end
end;

А вот здесь вылетает и на F9, и если просто запустить:
try
begin
QueryIns.SQL.Clear;
QueryIns.SQL.Add('INSERT INTO доход(Точка,Дата,Сумма) ');
QueryIns.SQL.Add('VALUES ("'+TochkaName+'",#'+newDate+'#,'+S um+')');
QueryIns.ExecSQL;
end
except
On E:EDatabaseError do
begin
e.message:='Такая точка уже существует!';
messageDlg(e.message, mtError,[mbOK],0);
end
end;

В чем разница???
Radost вне форума Ответить с цитированием
Старый 01.06.2007, 03:17   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну видимо у тебя в QueryIns.ExecSQL; возникает ошибка...
pu4koff вне форума Ответить с цитированием
Старый 01.06.2007, 09:14   #7
Radost
 
Регистрация: 31.05.2007
Сообщений: 9
По умолчанию

Ругается именно на нарушение уникальности. То есть, если запись новая, то запрос работает.
Radost вне форума Ответить с цитированием
Старый 01.06.2007, 09:20   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну смотри или структуру таблицы (мож там с ограничениями че намудрил) или данные, которые вводишь...
pu4koff вне форума Ответить с цитированием
Старый 01.06.2007, 13:10   #9
Radost
 
Регистрация: 31.05.2007
Сообщений: 9
По умолчанию

В таблице всего 3 поля, 2 из них ключевые. Ввожу новую строку-все нормально, ту же самую - вылетает. Это, крнечно, понятно, но мне же надо, чтоб красиво обрабатывалось, чтоб пользователю нормальное сообщение выдавалось.
Radost вне форума Ответить с цитированием
Старый 01.06.2007, 13:22   #10
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

попробуй компилятор отключить
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает win rar? Altera Свободное общение 2 30.03.2008 08:05
не работает! RECREATOR Общие вопросы Delphi 6 29.11.2007 12:42
не работает glColorTable n01z Компоненты Delphi 0 20.11.2007 18:31
Цикл не работает...? Иринкаа Помощь студентам 6 17.11.2007 00:27