Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
4-1103095551
Змей
2004-12-15 10:25
2005.02.06
Create Tform


1-1106725259
ShimON
2005-01-26 10:40
2005.02.06
Отследить выход из Windows


14-1106125811
uny
2005-01-19 12:10
2005.02.06
почему она спрашивает?


14-1105780863
iZEN
2005-01-15 12:21
2005.02.06
Современный Фотохудожник.


4-1103552114
berezne
2004-12-20 17:15
2005.02.06
Как програмно выключить компьютер?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский