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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
2-1194204107
olegusis
2007-11-04 22:21
2007.11.25
переменные


3-1184266719
WhiteCat
2007-07-12 22:58
2007.11.25
LIKE и регистр


6-1161104009
BFG9k
2006-10-17 20:53
2007.11.25
обработка PHP сценариев с помощью HTTP сервера Indy


15-1193077784
NAlex
2007-10-22 22:29
2007.11.25
TOpenDialog + куда девается память?


15-1193301218
infom
2007-10-25 12:33
2007.11.25
Храние exe в StarTeam.