Главная страница
    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.037 c
3-1105100023
Lucifer
2005-01-07 15:13
2005.02.06
Создание програмно псевданима DB MSAccess


1-1106229655
Павел
2005-01-20 17:00
2005.02.06
Как активировать дочернее окно в чужом приложении?


1-1106313648
Tack
2005-01-21 16:20
2005.02.06
Как получить системный шрифт Windows?


14-1105909240
Profi
2005-01-17 00:00
2005.02.06
Опрос


14-1105685336
WondeRu
2005-01-14 09:48
2005.02.06
Управляем мобилой устройствами по RS-232! Хочу, но как?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский