Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TDateEdit глючит? [D7, WinXP]


Страницы:   1 2

kyn66 ©   (2007-11-02 10:57:00) 

Посиавил на форму компонент из набора RX. В ситуации, когда нужна пустая дата при выходе из формы - ошибка, типа не верный тип даты "  .  .    ". Проверка при выходе отключена.

Declaration
property CheckOnExit: Boolean;

Description
Свойство определяет, будет ли проверяться правильность ввода даты в компонентах TDateEdit, TDBDateEdit или допустимый диапазон числа в компонентах TRxCalcEdit, TRxDBCalcEdit, TCurrencyEdit при потере фокуса строкой редактирования.

Если CheckOnExit = True, то в случае ввода недопустимого значения происходит исключение (exception).


Мне нужно, если дата пустая - в базу прописать Null (поле имеет тип Date). Непустое записывается нормально
ZakazTblData_2.Value := StrToDate(DateEdit2.Text);
Как победить ошибку?


Anatoly Podgoretsky   (2007-11-02 12:35:00) [1]

> kyn66  (02.11.2007 11:39:19)  [19]

> IIF(DateEdit2.Date = 0, 0, DateEdit2.Date

Давно такого дурдома не встречал


kyn66   (2007-11-02 11:42:00) [2]


> ЮЮ ©   (02.11.07 11:34) [18]
> IIF(DateEdit2.Date = 0, NULL, DateEdit2.Date),


Все, проверил, этот вариант работает, ВСЕМ Спасибо!


Ega23   (2007-11-02 11:40:00) [3]


> Всеравно пишет 30.12.1899


Что такое тип TdateTime?


kyn66   (2007-11-02 11:39:00) [4]

Получается хорошо тока вот так:

          ZakazTbl.InsertRecord([Nil, RegKod, DateEdit1.Date, Edit1.Text,
                                 Edit2.Text, Edit3.Text, Edit4.Text,
                                 Edit5.Text, Edit6.Text, Edit7.Text, Edit8.Text,
                                 IIF(DateEdit2.Date = 0, 0, DateEdit2.Date), Edit9.Text, Memo1.Text]);
          if DateEdit2.Date = 0 then
           begin
             ZakazTbl.Edit;
              ZakazTblData_2.Clear;
             ZakazTbl.Post;
           end;


ЮЮ   (2007-11-02 11:34:00) [5]

IIF(DateEdit2.Date = 0, NULL,DateEdit2.Date),

лучше см.[15]


Reindeer Moss Eater   (2007-11-02 11:33:00) [6]

IIF(DateEdit2.Date = 0, 0, DateEdit2.Date),

Блеск.
То есть если там ноль, то запиши явный ноль, иначе дату


kyn66   (2007-11-02 11:31:00) [7]


          ZakazTbl.InsertRecord([Nil, RegKod, DateEdit1.Date, Edit1.Text,
                                 Edit2.Text, Edit3.Text, Edit4.Text,
                                 Edit5.Text, Edit6.Text, Edit7.Text, Edit8.Text,
                                 IIF(DateEdit2.Date = 0, 0, DateEdit2.Date), Edit9.Text, Memo1.Text]);

Всеравно пишет 30.12.1899, как мне Clearтуда сделать при Insert


ЮЮ   (2007-11-02 11:31:00) [8]

Для Edit - подходит хорошо,

т.е. не используешь конструкциию типа
ZakazTbl.UpdateRecord([Nil, RegKod, DateEdit1.Date, Edit1.Text  :)

для Insert - ща попробую прикрутить

Код отличается одной строкой:

ZakazTblData_2.Insert;
илм
ZakazTblData_2.Edit;

Далее все одинаково:

...
ZakazTblData_2.Value := DateEdit2.Date;
...
ZakazTblData_2.Post;


kyn66   (2007-11-02 11:27:00) [9]

Для Edit - подходит хорошо, для Insert - ща попробую прикрутить


ЮЮ   (2007-11-02 11:24:00) [10]

Ты только писать умеещь? Прочти [6] ЮЮ ©   (02.11.07 11:06)

>Это пустая дата в Delphi
Это элементарный 0.0


Reindeer Moss Eater   (2007-11-02 11:23:00) [11]

Что есть то и записывает.
Это пустая дата в Delphi


kyn66   (2007-11-02 11:21:00) [12]

Нашел где вываливает. Тока теперь, когда пытаюсь внести в запись поле даты с пустым значением,

          ZakazTbl.InsertRecord([Nil, RegKod, DateEdit1.Date, Edit1.Text,
                                 Edit2.Text, Edit3.Text, Edit4.Text,
                                 Edit5.Text, Edit6.Text, Edit7.Text, Edit8.Text,
                                  DateEdit2.Date, Edit9.Text, Memo1.Text]);


В базу записывается не 0, а 30.12.1899


ЮЮ   (2007-11-02 11:15:00) [13]

> А приведение типа к дате не при чем

Да? Полагаешь StrToDate('  .  .  ') сработает без исключения? К чему это "приведение", емли есть свойство типа TDate?


kyn66   (2007-11-02 11:13:00) [14]


> f DateEdit2.Date = 0 then  ZakazTblData_2.Clearelse  ZakazTblData_2.
> Value := DateEdit2.Date;

DB в данном случае не нужен. Обработка класс, однако ну не доходит до нее, ошибка вываливает раньше.


Reindeer Moss Eater   (2007-11-02 11:08:00) [15]

а зачем на событии?


kyn66   (2007-11-02 11:06:00) [16]

Да вопрос больше о том, когда происходит ошибка, на каком событии не могу отловить и как его побороть. А приведение типа к дате не при чем


ЮЮ   (2007-11-02 11:06:00) [17]

if DateEdit2.Date = 0 then
 ZakazTblData_2.Clear
else
 ZakazTblData_2.Value := DateEdit2.Date;

З.Ы. Там есть и DB-компонент


Ega23   (2007-11-02 11:02:00) [18]

StrToDate(DateEdit2.Text);

КЛАСС!!!!!!!!


Sergey13   (2007-11-02 11:02:00) [19]

> [0] kyn66 ©   (02.11.07 10:57)
> ZakazTblData_2.Value := StrToDate(DateEdit2.Text);
А так если?
ZakazTblData_2.Value := DateEdit2.Date;


DVM   (2007-11-02 11:01:00) [20]

Все проверки надо производить при нажатии кнопки "Записать в базу"


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо