Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c