![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Firebird 1.0 спотыкается на TIME [D7, IB6.x]
Nick-From © (2004-09-20 14:08:00)Есть таблица:
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) нормально Обрабатывает. подскажите пожалуйста - в чем проблема?
Nick-From (2004-09-20 15:37:00) [1]Да, так работает :), спасибо!
Johnmen (2004-09-20 15:26:00) [2]Я так подозреваю, что беда в некорректном преобразовании типа. И ошибка эта в FIB+.
Поэтому делай простоFormatDateTime('HH:NN:SS',aCIT[i].aCallDuration). А на досуге, конечно, можно поковыряться в исходниках фибов...:)
Nick-From (2004-09-20 15:20:00) [3]Ну да, при '00:01:00' и '11:11:11' все нормуль, в чем беда?
Johnmen (2004-09-20 15:06:00) [4]Если вместо aCIT[i].aCallDuration поставить '00:01:00' или '11:11:11', то ошибки нет ?
Nick-From (2004-09-20 14:50:00) [5]aCIT - TCallInfoTable = array of TCallInfo;
Nick-From (2004-09-20 14:49:00) [6]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]);
Johnmen (2004-09-20 14:38:00) [7]>которую отправляем в процедуру:
Каким образом ?