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

Вниз

Firebird 1.0 спотыкается на TIME   Найти похожие ветки 

 
Nick-From ©   (2004-09-20 14:08) [0]

Есть таблица:

CREATE DOMAIN tid AS INTEGER DEFAULT 0 NOT NULL;
CREATE DOMAIN tstr15 AS VARCHAR(15) DEFAULT "" NOT NULL COLLATE PXW_CYRL;
CREATE DOMAIN tprice AS DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK (VALUE >= 0);
CREATE DOMAIN tdate AS DATE NOT NULL;
CREATE DOMAIN ttime AS TIME NOT NULL;

CREATE TABLE Calls
(
Nrec tid,
cOwner tid,
CallDate tdate,
CallTime ttime,
PhoneNumber tstr15,
CallType tstr15,
CallDirection tstr15,
CallDuration ttime,
CallCost tprice
);

Есть процедура добавления новой записи в таблицу:

CREATE PROCEDURE ADDNEWCALL
(
aNewNrec INTEGER,
aNewcOwner INTEGER,
aNewCallDate DATE,
aNewCallTime TIME,
aNewPhoneNumber VARCHAR(15),
aNewCallType VARCHAR(15),
aNewCallDirection VARCHAR(15),
aNewCallDuration TIME,
aNewCallCost DOUBLE PRECISION
)
AS
BEGIN
 INSERT INTO Calls (Nrec, cOwner, CallDate, CallTime, PhoneNumber, CallType, CallDirection, CallDuration, CallCost) VALUES (:aNewNrec, :aNewcOwner, :aNewCallDate, :aNewCallTime, :aNewPhoneNumber, :aNewCallType, :aNewCallDirection, :aNewCallDuration, :aNewCallCost);
END^

В клиенте описана запись, которую отправляем в процедуру:

 TCallInfo = record
   aCallDate: TDate;
   aCallTime: TTime;
   aPhoneNumber: string;
   aCallType: string;  
   aCallDirection: string;
   aCallDuration: TTime;  
   aCallCost: double;
 end;

Так вот, при вызове процедуры добавления, получаю ошибку:

Incompatible column/host variable data type. Dynamic SQL Error. SQL error code = -303. conversion error from string "0.000694444444444445"
Время, котрое вызывает эту ошибку = 00:01:00 - это его строковое представление.

Причем первое поле такого же типа (CallTime) нормально Обрабатывает. подскажите пожалуйста - в чем проблема?


 
Johnmen ©   (2004-09-20 14:38) [1]

>которую отправляем в процедуру:

Каким образом ?


 
Nick-From ©   (2004-09-20 14:49) [2]

pFIBQuery1.ExecProcedure("ADDNEWCALL",
                              [NewCallsNrec,
                               1,
                               aCIT[i].aCallDate,
                               aCIT[i].aCallTime,
                               aCIT[i].aPhoneNumber,
                               aCIT[i].aCallType,
                               aCIT[i].aCallDirection,
                               aCIT[i].aCallDuration,
                               aCIT[i].aCallCost]);


 
Nick-From ©   (2004-09-20 14:50) [3]

aCIT - TCallInfoTable = array of TCallInfo;


 
Johnmen ©   (2004-09-20 15:06) [4]

Если вместо aCIT[i].aCallDuration поставить "00:01:00" или "11:11:11", то ошибки нет ?


 
Nick-From ©   (2004-09-20 15:20) [5]

Ну да, при "00:01:00" и "11:11:11" все нормуль, в чем беда?


 
Johnmen ©   (2004-09-20 15:26) [6]

Я так подозреваю, что беда в некорректном преобразовании типа. И ошибка эта в FIB+.
Поэтому делай просто FormatDateTime("HH:NN:SS",aCIT[i].aCallDuration). А на досуге, конечно, можно поковыряться в исходниках фибов...:)


 
Nick-From ©   (2004-09-20 15:37) [7]

Да, так работает :), спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1096964908
Fishka
2004-10-05 12:28
2004.10.17
"Не показывать больше это окно"


3-1095770364
Relaxxx
2004-09-21 16:39
2004.10.17
Как мне сделать коньюнцию двух полей в SQL Acces??


14-1096101166
Lenor
2004-09-25 12:32
2004.10.17
как узнать, кем...


1-1096563788
Konan
2004-09-30 21:03
2004.10.17
Ini файл


3-1095764757
stud
2004-09-21 15:05
2004.10.17
вопрос по событиям в interbase