Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: 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 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1106580277
Jolik
2005-01-24 18:24
2005.02.06
Какой тип в Delphi соответствует float из VC++ 6.0?


1-1106428527
profesoralex
2005-01-23 00:15
2005.02.06
Kak mozhno na odnoy paneli uvidet papki VMESTE s failami


3-1105023510
naum
2005-01-06 17:58
2005.02.06
Шифрование баз данных


1-1106552655
Евг
2005-01-24 10:44
2005.02.06
Excel и Delphi


1-1106390829
stone
2005-01-22 13:47
2005.02.06
Окружность вписанная в квадрат