![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 31.05.2007
Сообщений: 9
|
![]()
Добрового всем времени суток! Помогите, пожалуйста! Подскажите, где я не права.
Есть БД-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 даже не заходит, а вылетает и выдает свое сообщение с тем же смыслом. Где ошибка? ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
![]()
Насколько мне известно в try записывается, то что мы хотим проверить, т.е. try необходимо написать перед Table1.insert
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 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; |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,067
|
![]()
если ты нажимаешь F9 и возникает ошибка, то так и будет. попробуй как обычную прогу в проводнике запустить...
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 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; В чем разница??? ![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,067
|
![]()
ну видимо у тебя в QueryIns.ExecSQL; возникает ошибка...
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 31.05.2007
Сообщений: 9
|
![]()
Ругается именно на нарушение уникальности. То есть, если запись новая, то запрос работает.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,067
|
![]()
ну смотри или структуру таблицы (мож там с ограничениями че намудрил) или данные, которые вводишь...
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 31.05.2007
Сообщений: 9
|
![]()
В таблице всего 3 поля, 2 из них ключевые. Ввожу новую строку-все нормально, ту же самую - вылетает. Это, крнечно, понятно, но мне же надо, чтоб красиво обрабатывалось, чтоб пользователю нормальное сообщение выдавалось.
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 15.02.2007
Сообщений: 183
|
![]()
попробуй компилятор отключить
Знать все невозможно, в силу того, что жить бы стало неинтересно.
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как работает 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 |