Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Вниз
Как перехватить ошибку записи? Найти похожие ветки
← →
SkullNet (2003-09-09 18:43) [0]Проблема такая, есть поле формате Money, куда пользователь по ошибке может ввести всякую хрень явно не денежного формата, на что программа завопит ему дурным голосом о EDatadaseError и затем прервет свое выполнение. Я хочу чтобы при возникновении этой ошибки у пользователя появлялось бы мое предупреждение (MessageDlg) и была возможности все исправить.
Пробовал
Try TableName.Post;
except MessageDlg();
end;
Не помогает...
Благодарю за внимание...
← →
HSolo (2003-09-09 18:59) [1]try
...
except
On EТакой-тоException do
...
end;
← →
Hawk2 (2003-09-09 19:08) [2]Если данные в поля заводятся через Edit-ы, то можно контролировать ввод и разрешать вводить только цифры.
P.S. В серйозных программах никто данные в гриде не редактирует.
← →
SkullNet (2003-09-09 19:20) [3]To: Hawk2
Данные-то вводятся через Edit"ы, но котролировать надо ввод и цифр, и знаков (разделитель только ","), а мне это делать лень проще перехватить ошибку...
← →
SkullNet (2003-09-09 19:21) [4]To HSolo:
Спасибо, сейчас попробую...
← →
Anatoly Podgoretsky (2003-09-09 19:48) [5]SkullNet (09.09.03 19:21) [4]
Различий нет, в твоем варианте обрабатываются все ошибки, в его только определенного класса.
← →
Bob (2003-09-09 19:52) [6]Контролировать ввод цифр и знаков можно через MaskEdit, главное - правильно задать маску и все. Описано в примерах.
← →
SkullNet (2003-09-09 20:07) [7]Вот кусок кода:
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"
Что подскажите? Как мне самому все же обработать ошибку...
← →
SkullNet (2003-09-09 20:10) [8]To Bob:
Контролировать ввод через MaskEdit можно, если наперед знаешь кол-во вводимых символов. Я не знаю какую сумму наберет пользователь... Или я не прав?
← →
SkullNet (2003-09-09 20:12) [9]To: Anatoly Podgoretsky
Различий действительно нет, ни в одном, ни в другом варианте ошибка не ловиться...
← →
Bob (2003-09-09 20:18) [10]Ну во-первых:
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:30) [11]To Bob:
И все равно эта зараза не выдает мое сообщение...
Предложения?
← →
Bob (2003-09-09 20:32) [12]Какое сообщение-то?
← →
SkullNet (2003-09-09 21:20) [13]То, что я хочу вывести вместо системного, у тебя это "Invalid Data"...
← →
panov (2003-09-09 21:36) [14]>SkullNet
странно, но у меня вот такой код отрабатывает совершенно спокойно, выдает только мое сообщение об ошибке.
try
tbl.Append;
tbl.FieldByName("m").AsString:=Edit1.Text;
tbl.Post;
except
ShowMessage("Err");
end;
← →
Rol (2003-09-10 05:58) [15]All, а вам не кажется, что это исключение у него вываливается при запуске из IDE, а на Ф9 он почему-то нажать не хочет?
← →
Bob (2003-09-10 11:09) [16]Абсолютно согласен с Panov. У меня тоже этот код прекрасно работает. А вместо моего "Invalid Data" напиши свое сообщение. Только лови ошибку конвертации из String в Money. Все должно быть пучком.
← →
Bob (2003-09-10 11:20) [17]И еще. Если хочешь контролировать цифирь и только цифирь у компонента TField есть такое веселое свойство как EditMask:string. Делаешь приблизительно так FieldByName("...").EditMask:="#,##0.00". При использовании DBEdit прилепленного к этому полю программа не даст тебе ввести ничего кроме цифири. По-моему так. Если я где-то ошибся то народ или Help меня поправят.
← →
Alexander_K (2003-09-10 16:23) [18]Да можно в евенте OnPressKey просто проверять чтобы вводимое было бы цифрами
← →
Alexander_K (2003-09-10 16:23) [19]Да можно в евенте OnPressKey просто проверять чтобы вводимое было бы цифрами
← →
Alexander_K (2003-09-10 16:25) [20]Сорри за 2 раза...
← →
stud (2003-09-10 16:35) [21]а можно проще - использовать компонент типа currenceedit и не надо ничего отлавливать, и пользователь не введет чего не надо
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c