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

TDateEdit глючит?   Найти похожие ветки 

 
kyn66 ©   (2007-11-02 10:57) [0]

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

Declaration
property CheckOnExit: Boolean;

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

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


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


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

проверять значеиение перед использованием


 
Reindeer Moss Eater ©   (2007-11-02 11:01) [2]

StrToDate(DateEdit2.Text);

Чумаааааа.....


 
DVM ©   (2007-11-02 11:01) [3]

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


 
Sergey13 ©   (2007-11-02 11:02) [4]

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


 
Ega23 ©   (2007-11-02 11:02) [5]

StrToDate(DateEdit2.Text);

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


 
ЮЮ ©   (2007-11-02 11:06) [6]

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

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


 
kyn66 ©   (2007-11-02 11:06) [7]

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


 
Reindeer Moss Eater ©   (2007-11-02 11:08) [8]

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


 
kyn66 ©   (2007-11-02 11:13) [9]


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

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


 
ЮЮ ©   (2007-11-02 11:15) [10]

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

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


 
kyn66 ©   (2007-11-02 11:21) [11]

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

          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


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

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


 
ЮЮ ©   (2007-11-02 11:24) [13]

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

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


 
kyn66 ©   (2007-11-02 11:27) [14]

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


 
ЮЮ ©   (2007-11-02 11:31) [15]

Для 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:31) [16]


          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


 
Reindeer Moss Eater ©   (2007-11-02 11:33) [17]

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

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


 
ЮЮ ©   (2007-11-02 11:34) [18]

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

лучше см.[15]


 
kyn66 ©   (2007-11-02 11:39) [19]

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

          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;



 
Ega23 ©   (2007-11-02 11:40) [20]


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


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


 
kyn66 ©   (2007-11-02 11:42) [21]


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


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


 
Anatoly Podgoretsky ©   (2007-11-02 12:35) [22]

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

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

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



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

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



Память: 0.5 MB
Время: 0.012 c
2-1193900960
Darvin
2007-11-01 10:09
2007.11.25
Перехват OnMouseWheel в DrawGrid


2-1193943225
SKIPtr
2007-11-01 21:53
2007.11.25
Как удалить форму


6-1174982246
skye
2007-03-27 11:57
2007.11.25
Game Monitor


11-1177917769
Dmitry___
2007-04-30 11:22
2007.11.25
Передать PControl в процедуру dll


10-1136746724
DillerXX
2006-01-08 21:58
2007.11.25
reinterpret_cast




   Наверх