Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизЧто не так ? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c