Вниз
Скачать: CL | DM;

Как избежать исключения?   Найти похожие ветки 

 
denisych   (2005-01-03 23:29) [0]

Здравствуйте !

Delphi7 + FIBPlus + TDBEDIT

Поле в таблице Firebird - DATE.
Если на форме ввести в DBEDIT неправильную дату , то вылетает
EConvertError.
Как проверить дату ( типа OnValidate ) до исключения ?

С уважением , Денисыч



 
msguns ©   (2005-01-04 10:24) [1]

1. Отказаться от редактирования в DB-aware контролах
2. Использовать соответствующие события DB-Aware контролов
3. Юзать гриды, где все это сделано "добрыми умными" дядями.


 
denisych   (2005-01-07 23:58) [2]


> 1. Отказаться от редактирования в DB-aware контролах

Вообще - то я пишу так , как этого хочет клиент , а не так как это у меня получается


> 2. Использовать соответствующие события DB-Aware контролов

Конкретно. Умную мину сделать всегда легко. Что их надо использовать я и сам знаю , но
перехватывал я разные события разных элементов( начиная от OnExit DBEDIT и заканчивая OnPost Dataset ) , но все они
возникают ПОСЛЕ  EConvertError.  


> 3. Юзать гриды, где все это сделано "добрыми умными" дядями.

Гриды я юзаю постоянно , но если все элементы DBEDIT , то
грид для даты тут мне совсем не подходит.  Если бы можно было в данном случае использовать грид , то на форум я бы не писал.


 
sniknik ©   (2005-01-08 00:42) [3]

> Что их надо использовать я и сам знаю , но
> перехватывал я разные события разных элементов( начиная от OnExit DBEDIT и заканчивая OnPost Dataset ) , но все они
> возникают ПОСЛЕ  EConvertError.  
попробуй OnGetText у поля, может и подойдет.


 
sniknik ©   (2005-01-08 00:46) [4]

сорри, тебе же не чтение а запись нужно перехватить тогда OnSetText... хотя не уверен. попробуй в обшем. (я не проверял)


 
denisych   (2005-01-08 17:09) [5]


> нужно перехватить тогда OnSetText...


Спасибо. Толковый совет, но я это пробовал. OnSetText хорошо работает , когда у тебя дата введена в правильном формате, но
такой даты не существует (  33.33.33 ).  А если вводишь неправильный формат ( 33.__.33 ) , то вылетает что-то типа  
invalid input value , хотя точно не помню и это исключение возникает раньше всего.
Временно я написал глобальный обработчик Application.OnException , но если у кого-то есть идеи лучше ,
то буду благодарен за совет.


 
sniknik ©   (2005-01-08 18:15) [6]

чегото нифига не пойму, получить управление раньше исключения, получили... но не подщодит потому как исключение... (бред имхо)

тум же все в твоих руках...
вот так что тоже исключение
procedure TForm1.ADODataSet1BirthDateSetText(Sender: TField;
 const Text: String);
begin
 Sender.AsDateTime:= StrToDateTimeDef(Text, Now());
end;


и учти, на этот раз я уже проверил... ;о))


 
Дмитрий В. Белькевич   (2005-01-09 06:21) [7]

Может имеет смысл вообще от dbedit"а отказаться? Edit, а потом ручками одну команду на заполнение поля при открытии формы, при закрытии - вернуть данные в базу. Может так проще будет?


 
Экспериментатор   (2005-01-10 11:23) [8]

Такой вариант у меня тоже возник.
Если уж такие траблы, то
почему бы не вводить дату в обычный едит, на событие OnChange навесить  проверку и передачу его в табличку


 
msguns ©   (2005-01-10 11:57) [9]

>denisych   (07.01.05 23:58) [2]
>> 1. Отказаться от редактирования в DB-aware контролах
Вообще - то я пишу так , как этого хочет клиент , а не так как это у меня получается

А клиент что, селезенкой чувствует, что поле, куда он вводит, "приклеено" к датасету ?

>> 2. Использовать соответствующие события DB-Aware контролов
>Конкретно. Умную мину сделать всегда легко. Что их надо использовать я и сам знаю , но
перехватывал я разные события разных элементов( начиная от OnExit DBEDIT и заканчивая OnPost Dataset ) , но все они
возникают ПОСЛЕ  EConvertError.  

Когда писал этот пост, мина у меня была вовсе не "умная". А вот события у контролов есть разные, в том числе и OnKeyPress/OnKeyDown

>> 3. Юзать гриды, где все это сделано "добрыми умными" дядями.
>Гриды я юзаю постоянно , но если все элементы DBEDIT , то
грид для даты тут мне совсем не подходит.  Если бы можно было в данном случае использовать грид , то на форум я бы не писал.

А вот опять же объясни дураку (мне то есть) КАК ЮЗЕР РАЗЛИЧАЕТ DBEDIT ОТ DBCTRLGRID ? Почему свет сошелся клином на dbEdit`ах я все же не понял (хотя и пытался при этом делать умное лицо)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.044 c
1-1106572920
lexales
2005-01-24 16:22
2005.02.06
Помогите с WebBrouser.


14-1106094680
TButton
2005-01-19 03:31
2005.02.06
Starting, where the story ending...


1-1106278221
Александр1
2005-01-21 06:30
2005.02.06
Работа с Word2003


1-1106135979
lehich
2005-01-19 14:59
2005.02.06
проверка запароленного файла


1-1106677375
0xfffffff
2005-01-25 21:22
2005.02.06
Добавление своей записи в Add remove programs




   Наверх