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

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

Как перехватить ошибку записи? [D7, Paradox]


Страницы:   1 2

SkullNet ©   (2003-09-09 18:43:00) 

Проблема такая, есть поле формате Money, куда пользователь по ошибке может ввести всякую хрень явно не денежного формата, на что программа завопит ему дурным голосом о EDatadaseError и затем прервет свое выполнение. Я хочу чтобы при возникновении этой ошибки у пользователя появлялось бы мое предупреждение (MessageDlg) и была возможности все исправить.
Пробовал
Try TableName.Post;
except MessageDlg();
end;
Не помогает...
Благодарю за внимание...


stud   (2003-09-10 16:35:00) [1]

а можно проще - использовать компонент типа currenceedit и не надо ничего отлавливать, и пользователь не введет чего не надо


Alexander_K   (2003-09-10 16:25:00) [2]

Сорри за 2 раза...


Alexander_K   (2003-09-10 16:23:00) [3]

Да можно в евенте OnPressKey просто проверять чтобы вводимое было бы цифрами


Alexander_K   (2003-09-10 16:23:00) [4]

Да можно в евенте OnPressKey просто проверять чтобы вводимое было бы цифрами


Bob   (2003-09-10 11:20:00) [5]

И еще. Если хочешь контролировать цифирь и только цифирь у компонента TField есть такое веселое свойство как EditMask:string. Делаешь приблизительно так FieldByName("...").EditMask:="#,##0.00". При использовании DBEdit прилепленного к этому полю программа не дасттебе ввести ничего кроме цифири. По-моему так. Если я где-то ошибся то народ или Help меня поправят.


Bob   (2003-09-10 11:09:00) [6]

Абсолютно согласен с Panov. У меня тоже этот код прекрасно работает. А вместо моего "Invalid Data" напиши свое сообщение. Только лови ошибку конвертации из String в Money. Все должно быть пучком.


Rol   (2003-09-10 05:58:00) [7]

All, а вам не кажется, что это исключение у него вываливается при запуске из IDE, а на Ф9 он почему-то нажать не хочет?


panov   (2003-09-09 21:36:00) [8]

>SkullNet
странно, но у меня вот такой код отрабатывает совершенно спокойно, выдает только мое сообщение об ошибке.

try
tbl.Append;
tbl.FieldByName("m").AsString:=Edit1.Text;
tbl.Post;
except
ShowMessage("Err");
end;


SkullNet   (2003-09-09 21:20:00) [9]

То, что я хочу вывести вместо системного, у тебя это "Invalid Data"...


Bob   (2003-09-09 20:32:00) [10]

Какое сообщение-то?


SkullNet   (2003-09-09 20:30:00) [11]

To Bob:
И все равно эта зараза не выдает мое сообщение...
Предложения?


Bob   (2003-09-09 20:18:00) [12]

Ну во-первых:
try
Table.FieldbyName"Cost").AsString:=StrToFloat(Form2.Edit.Text);
Table.Post
except
on EConvertError do
begin
ShowMessage("Invalid data");
Edit.SetFocus
end//EConvertError
end//Try


SkullNet   (2003-09-09 20:12:00) [13]

To: Anatoly Podgoretsky
Различий действительно нет, ни в одном, ни в другом варианте ошибка не ловиться...


SkullNet   (2003-09-09 20:10:00) [14]

To Bob:
Контролировать ввод через MaskEdit можно, если наперед знаешь кол-во вводимых символов. Я не знаю какую сумму наберет пользователь... Или я не прав?


SkullNet   (2003-09-09 20:07:00) [15]

Вот кусок кода:

procedure TForm1.ButonClick(Sender: TObject);
begin
with Form2 do
begin
Table.Insert;
Table.FieldbyName("Cost").AsString:=Form2.Edit.Text;
//поле Cost имеет формат Money.
try
Table.Post;
except
on EO: EDatabaseError do MessageDlg("",mtCustom,[mbOK],0);
end;
end;

при компиляции выдается:
[Error] ...Undeclared identifier:"EDatabaseError"

Что подскажите? Как мне самому все же обработать ошибку...


Bob   (2003-09-09 19:52:00) [16]

Контролировать ввод цифр и знаков можно через MaskEdit, главное - правильно задать маску и все. Описано в примерах.


Anatoly Podgoretsky   (2003-09-09 19:48:00) [17]

SkullNet (09.09.03 19:21) [4]
Различий нет, в твоем варианте обрабатываются все ошибки, в его только определенного класса.


SkullNet   (2003-09-09 19:21:00) [18]

To HSolo:
Спасибо, сейчас попробую...


SkullNet   (2003-09-09 19:20:00) [19]

To: Hawk2
Данные-то вводятся через Edit"ы, но котролировать надо ввод и цифр, и знаков (разделитель только ","), а мне это делать лень проще перехватить ошибку...


Hawk2   (2003-09-09 19:08:00) [20]

Если данные в поля заводятся через Edit-ы, то можно контролировать ввод и разрешать вводить только цифры.

P.S. В серйозных программах никто данные в гриде не редактирует.


Страницы:   1 2

Наверх

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