Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Что не так ?   Найти похожие ветки 

 
gds ©   (2003-10-16 17:12) [0]

Ув.люди помогите решить возникшую ситуацию :

...
Form1.IBTable3Data.AsDateTime:=Date;
Form1.IBTable3Vremia.AsDateTime:=Time;
...
Form1.IBTable3.Post;
Form1.IBTransaction1.Commit;
...

Этот фрагмент программы прекрасно выполнялся в среде Делфи5 и не вызывал нареканий.. После установки Делфи6.. Form1.IBTable3Vremia.AsDateTime:=Time; начала вызывать ошибку: ["0.57895715" is not a valid TimeStamp.] .. хотя вышестоящая команда присваивания текущей даты выполняеться как и раньше, не пойму: что ж не так ему с временем? У кого есть какие идеи - буду благодарен. Дополнительная информация: ( Var IBTable3Vremia: TTimeField; Тип поля в БД - Time, БД Interbase.. Сервер БД - FireBird.. К базе обращаюсь посредством компонент IBX.) Пробовал выводить значение Label1.Caption:=TimeToStr(Time); Увидел то, что и ожидал - текущее время.. Что же не так не понимаю?


 
MsGuns ©   (2003-10-16 17:29) [1]

На вскидку.
Попробуй так:
Form1.IBTable3Data.AsString:=DateToStr(Date);
Form1.IBTable3Vremia.AsString:=TimeToStr(Time);


 
gds ©   (2003-10-16 17:31) [2]

Пробовал ) Глухо.. Ошибка таже..


 
Alex_Bredin ©   (2003-10-16 17:54) [3]

TDateTimeField encapsulates the fundamental behavior common to Date-time fields. Date-time fields contain combined date and time information, sometimes called timestamps. TDateTimeField introduces new properties to convert between date-time values and other data types, and to format the value of a date-time field for display.

Note: Data-time values accessed through dbExpress use TSQLTimeStampField instead of TDateTimeField

Дело по-видимому в этом.Надо приводить время к целому типу.


 
stud ©   (2003-10-16 17:59) [4]

а какой диалект БД. типы date time меньше по длине чем timestamp
может попробовать
Form1.IBTable3Vremia.AsTime:=Time;
а вообще лучше это делать через запросы и в запросах через параметры


 
gds ©   (2003-10-16 18:00) [5]

Form1.IBTable3Vremia.AsSQLTimeStamp:=DateTimeToSQLTimeStamp(Time); вызывает ту же ошибку.. к тому же обрати внимание, что Form1.IBTable3Data.AsDateTime:=Date; работает нормально без всяких преобразований.


 
stud ©   (2003-10-16 18:01) [6]

с датой проще округлил до целого вот тебе и дата


 
Alex_Bredin ©   (2003-10-16 18:04) [7]

а если gettime вместо time?


 
gds ©   (2003-10-16 18:05) [8]

РЕПЛИКА gds © (16.10.03 18:00)ИСПРАВЛЕНА :Form1.IBTable3Vremia.AsSQLTimeStamp:=DateTimeToSQLTimeStamp(Time); вызывает ошибку [Cannot access field "Vremia" as type SQLTimeStamp.] .. к тому же обрати внимание, что Form1.IBTable3Data.AsDateTime:=Date; работает нормально без всяких преобразований.

stud .AsTime нет такого ) - пробовал сам ) и через AsVariant AsString AsValue ))


 
gds ©   (2003-10-16 18:05) [9]

диалект 3


 
gds ©   (2003-10-16 18:07) [10]

чувствую, что надо интсалить 5ый и править в нем (((((((


 
gds ©   (2003-10-16 18:14) [11]

простите за ламерский вопрос,
параметры чего вписать? там их три ))
Form1.IBTable3Vremia.AsDateTime:=GetTime();


 
gds ©   (2003-10-16 18:16) [12]

function getTime(uColumnNumber: Word; pData: Pointer; var pbIsNull: LongBool)


 
kostik78ua   (2003-10-16 18:25) [13]

К сожалению не смогу протестировать (нету Делфи 6), но пару советов:
1. ...AsFloat := Time;
2.
var d: TDateTime;
d := Time;
...AsDateTime := d;
3.
var t: TTimeStamp;
t := DateTimeToTimeStamp(Time);
...AsDateTime := t;


 
gds ©   (2003-10-17 11:22) [14]

.. Это просто наваждение не дает мне покоя!! Значит так создаю таблицу в IBConsole:
CREATE TABLE "PROBA"
(
"NOPER" INTEGER NOT NULL,
"DATA" DATE,
"VREMIA" TIME,
PRIMARY KEY ("NOPER")
);

После чего обращаюсь к ней через IBTable и не могу присвоить полю VREEMIA значение времени - ничего не выходит ошибка таже ["число" is not a valid TimeStamp].. хотя в гриде связанным датасет с ИБТейбл верно отображаеться введенное мною значение.. но грид показывает что запись находиться в режиме вставки [*] и поститься ну никак не желает.. Что это такое?? ПОчему в Делфе5 ВСЕ РАБОТАЕТ, а в мною используемой 6ой не хочет .. !!! Даже таким образом: IBTable1.FieldByName("VREMIA"):=StrToTime("16:00:00"); Более того если вносить изменения прямо в гриде, оно тоже ругаеться тем же матом.. Что это за глюка? Попробуйте сами.. (Хотя из оболочки IBConsole это поле редактируеться так же прекрасно как и остальные два..)


 
gds ©   (2003-10-17 11:26) [15]

gds © (17.10.03 11:22) [14] ИСПРАВЛЕНО: .. Даже таким образом: IBTable1.FieldByName("VREMIA").AsDateTime:=StrToTime("16:00:00"); ...


 
kaif ©   (2003-10-17 12:09) [16]

А из под Delphi5 ты с Firebird работал? И все работало в IBX?
Если да, то ошибка (логически) в IBX где-то. Поставь апдейт IBX. Или пошагово попытайся найти, где это происходит в IBX-ах и почему.


 
gds ©   (2003-10-17 12:18) [17]

ДА под делф5 я работал с тем же сервером БД. Просто здесь дело принципа.. Не хочеться ставить делф5, чтобы дописать новую функцию.( .. говоря откровенне он по началу ругалс я и на денежные поля (при том что в 5ом все было Ок) .. но я нашел, что ему мешало.. А вот с этой проблемой никак.. и дико то, что даже стандртный грид, для работы и правки таблиц ИнтерБейса вызывает ошибку.. Это просто маразм.


 
gds ©   (2003-10-17 12:20) [18]

есть конечно вариант - изменить поле базы с тайм допустим на стринг.. но ведь это ж противоестественно ((( Хочеться докопаться до сути.



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

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

Наверх




Память: 0.51 MB
Время: 0.039 c
3-41074
alexsc
2003-10-23 17:31
2003.11.13
вопрос


14-41876
Dima_dvp
2003-10-23 23:03
2003.11.13
Application - Зачем? и как избавиться


14-41905
Dmitriy O.
2003-10-15 16:24
2003.11.13
Конвертация форматов


1-41335
Ganjo
2003-10-30 18:27
2003.11.13
Компонет Edit: Как запретить ввод буквенных символов


4-42219
Пубертанец
2003-09-02 17:39
2003.11.13
2 вопроса