![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему TDateField.Value возвращает неправильные значения??? [D5, IB5.x]
Sirus © (2002-08-22 12:08:00)Привет мастера...
Есть вопрос: Почему TDateField.Value возвращает неправильные значения вроде 00.00.0000 и 07.11.34323???
ЮЮ (2002-08-23 03:38:00) [1]1.
if Query1.FieldByName("DTR_DATE"). isNull
then DtrDate:=0
else DtrDate:=Query1.FieldByName("DTR_DATE").AsDateTime;
2.
var VarDate:Variant;
...
VarDate:=Query1.FieldByName("DTR_DATE").AsDateTime;
if VarIsNull(VarDate) or VarIsEmpty(VarDate) then ...
if VarType(VarDate)=varDate then ...
Sirus (2002-08-22 13:34:00) [2]> Johnmen ©
DtrDate:=Query1.FieldByName("DTR_DATE").AsDateTime;
Такое не прокатывает... Null есть Null...
Johnmen (2002-08-22 13:26:00) [3]DtrDate:=Query1.FieldByName("DTR_DATE").AsDateTime;
Mike Kouzmine (2002-08-22 13:20:00) [4]>>Так вот.. я не вижу сплошной ошибки... тем более что все >>работает.... Правда неправильно....
Если работает неправильно - значит не работает.
Если тебе не нравиться, что поля не имеют значений, то ставь по умолчанию, или присваивай им значения, а если нет, то есть другие стандартные способы.
Sirus (2002-08-22 13:15:00) [5]Короче база на Interbase 5.5...
Есть таблица SUBS_DTR в которой есть поле DTR_DATE тип DATE...
Есть очень много записей... Среди них есть записи в которых значения поля SUBS_DTR нету, т.е. есть но NULL...
При обращении к полю DtrDate:=Query1.FieldValues["DTR_DATE"]; выскакивает ошибка... (типа не тот тип)... Если добавлять поля к которым можно обращаться на ты, т.е. Query1DTR_DATE.AsDate; не боясь значений типа NULL и вообще пустых значений...
Вот и приходится создавать поля которые вместо NULL возвращают вполне конвертируемые значения... А потом их нужно убирать потому-что компонент Query1 используется других запросов...
Johnmen (2002-08-22 13:01:00) [6]Пойми, что у тебя каша в голове...(об этом свидетельствует вышеприведенный код)
Как это в базе значения типа NULL ?????!!!!!!
Как это создавать поля и убирать ?????!!!!!
.............
.............
.............
Sirus (2002-08-22 12:55:00) [7]Мне не нравятся значения типа NULL которые иногда встречаются в базе... Чтобы изюежать их мне приходится создавать поля, которые можно убирать и ставить заново в зависимости нужны они или нет...
Так вот.. я не вижу сплошной ошибки... тем более что все работает.... Правда неправильно.... И насчет убийства полей...
Я не догнал что значит убивать их... я просто убираю их...
Mike Kouzmine (2002-08-22 12:49:00) [8]Извини, ошибся, просто глаза разбежались.....
Хотя я против таких вопросов, но все же, зачем это? Что ты хочешь сделать?
Mike Kouzmine (2002-08-22 12:43:00) [9]Ну так ты же убиваешь поля. И что ты присваиваешь?
Johnmen (2002-08-22 12:42:00) [10]Это одна сплошная ошибка.....:(
Sirus (2002-08-22 12:35:00) [11]Скажите где ошибка???
Var FDate:TDateField;
DtrDate:TDate;
Begin
Query1.Close;
Query1.Fields.Clear;
FDate:=TDateField.Create(Self);
FDate.FieldName:="DTR_DATE";
FDate.Name:=Query1.Name+FDate.FieldName;
FDate.Dataset:=Query1;
Query1.FieldDefs.Update;
Query1.SQL.Clear;
Query1.SQL.Add("select distinct(DTR_DATE) from SUBS_DTR");
Query1.SQL.Add("order by DTR_DATE");
Query1.Open;
Query1.Last;
DtrDate:=FDate.Value;
ShowMessage(DateToStr(DtrDate));
End;
В результате получаю дату типа: 05.07.21451...
В строку конвертируется... А обратно засунуть его в базу не получается... Invalid type conversion...
Попробовал FDate.AsString... результат строка типа 00.00.0000 которая естественно в переменную типа TDate не хочет переходить...
Mike Kouzmine (2002-08-22 12:15:00) [12]Возвращает, что есть и в том формате, который ты указываешь.
Вариант 1 - Не так присваиваешь
Вариант 2 - Не так смотришь