![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что не так ? [D5, D6, IB5.x, IB6.x]
gds © (2003-10-16 17:12:00)
Ув.люди помогите решить возникшую ситуацию :
...
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); Увидел то, что и ожидал - текущее время.. Что же не так не понимаю?
gds (2003-10-17 12:20:00) [1]
есть конечно вариант - изменить поле базы с тайм допустим на стринг.. но ведь это ж противоестественно ((( Хочеться докопаться до сути.
gds (2003-10-17 12:18:00) [2]
ДА под делф5 я работал с тем же сервером БД. Просто здесь дело принципа.. Не хочеться ставить делф5, чтобы дописать новую функцию.( .. говоря откровенне он по началу ругалс я и на денежные поля (при том что в 5ом все было Ок) .. но я нашел, что ему мешало.. А вот с этой проблемой никак.. и дико то, что даже стандртный грид, для работы и правки таблиц ИнтерБейса вызывает ошибку.. Это просто маразм.
kaif (2003-10-17 12:09:00) [3]
А из под Delphi5 ты с Firebird работал? И все работало в IBX?
Если да, то ошибка (логически) в IBX где-то. Поставь апдейт IBX. Или пошагово попытайся найти, где это происходит в IBX-ах и почему.
gds (2003-10-17 11:26:00) [4]
gds © (17.10.03 11:22) [14] ИСПРАВЛЕНО: .. Даже таким образом: IBTable1.FieldByName("VREMIA").AsDateTime:=StrToTime("16:00:00"); ...
gds (2003-10-17 11:22:00) [5]
.. Это просто наваждение не дает мне покоя!! Значит так создаю таблицу в 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 это поле редактируеться так же прекрасно как и остальные два..)
kostik78ua (2003-10-16 18:25:00) [6]
К сожалению не смогу протестировать (нету Делфи 6), но пару советов:
1. ...AsFloat := Time;
2.
var d: TDateTime;
d := Time;
...AsDateTime := d;
3.
var t: TTimeStamp;
t := DateTimeToTimeStamp(Time);
...AsDateTime := t;
gds (2003-10-16 18:16:00) [7]
function getTime(uColumnNumber: Word; pData: Pointer; var pbIsNull: LongBool)
gds (2003-10-16 18:14:00) [8]
простите за ламерский вопрос,
параметры чего вписать? там их три ))
Form1.IBTable3Vremia.AsDateTime:=GetTime();
gds (2003-10-16 18:07:00) [9]
чувствую, что надо интсалить 5ый и править в нем (((((((
gds (2003-10-16 18:05:00) [10]
диалект 3
gds (2003-10-16 18:05:00) [11]
РЕПЛИКА 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 ))
Alex_Bredin (2003-10-16 18:04:00) [12]
а если gettime вместо time?
stud (2003-10-16 18:01:00) [13]
с датой проще округлил до целого вот тебе и дата
gds (2003-10-16 18:00:00) [14]
Form1.IBTable3Vremia.AsSQLTimeStamp:=DateTimeToSQLTimeStamp(Time); вызывает ту же ошибку.. к тому же обрати внимание, что Form1.IBTable3Data.AsDateTime:=Date; работает нормально без всяких преобразований.
stud (2003-10-16 17:59:00) [15]
а какой диалект БД. типы date time меньше по длине чем timestamp
может попробовать
Form1.IBTable3Vremia.AsTime:=Time;
а вообще лучше это делать через запросы и в запросах через параметры
Alex_Bredin (2003-10-16 17:54:00) [16]
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
Дело по-видимому в этом.Надо приводить время к целому типу.
gds (2003-10-16 17:31:00) [17]
Пробовал ) Глухо.. Ошибка таже..
MsGuns (2003-10-16 17:29:00) [18]
На вскидку.
Попробуй так:
Form1.IBTable3Data.AsString:=DateToStr(Date);
Form1.IBTable3Vremia.AsString:=TimeToStr(Time);