Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо