Subject Exception when preparing
Author jarnilse@yahoo.no
Delphi 5 Ent., IBO version 3.6 d, IB 5.6
The SQL statement has four parameters; 1 Integer and 3 DateTime.
Let all DateTime parameters be '2001/05/15 06'.
When I prepare TIBOQuery for the second time I get an exception:
"Project FaktMLBrtt.exe raised exception class EConvertError with
message "2001/05/15 06:00:00.0000' is
not a valid integer value'.Process stopped. Use Step or Run to
continue."
It seems the *old* parameters has been messed up because an old date
is believed to be an integer.
Also the point four zeros in "2001/05/15 06:00:00.0000" puzzles me.

The exception occurs in IBA_Statement.IMP at line 2030 in
procedure TIB_Statement.SysRestoreParamValueLinks
{ Transfer OldParamValues to new params that line up by name. }

I use the following code where MinusQry is the TIBOQuery:
procedure TMainForm.ForbrukBtnClick(Sender: TObject);
begin
MinusQry.Close;
if MinusQry.Prepared then MinusQry.Unprepare;
MinusQry.Prepare;
MinusQry.Params.ParamValues['NETW_NETWORK']:=HovdListQry
['NETW_NETWORK']; // Integer
// DateTime parameters include hour information
MinusQry.Params.ParamValues['STAND_DATO_TID']:=TilDTP.Date;
MinusQry.Params.ParamValues['FRA_DATO_TID']:=FraDTP.Date;
MinusQry.Params.ParamValues['TIL_DATO_TID']:=TilDTP.Date;
MinusQry.Open;
end;

Tables:

T_NETWORK: NETW_NETWORK integer primary key
T_SUBNET: SUBN_SUBNET integer primary key, SUBN_NETWORK is foreign
key to T_NETWORK
T_NODE: NODE_NODE integer primary key, NODE_SUBNET is foreign key to
T_SUBNET
T_PULSE: PULS_PULSE integer primary key, PULS_NODE is foreign key to
T_NODE
T_METER_VALUE primary key is (MTRVAL_PULSE, MTRVAL_DATE_TIME),
MTRVAL_PULSE is foreign key, MTRVAL_VALUE double precision

The SQL statement is:

SELECT
NW.NETW_NETWORK, NW.NETW_NAME, NW.NETW_DOMAIN
, S.SUBN_SUBNET, S.SUBN_NAME, S.SUBN_COLLECTION
, N.NODE_NODE, N.NODE_NAME, N.NODE_ID, N.NODE_COLLECTION
, P.PULS_PULSE, P.PULS_NAME, P.PULS_PULSNR, P.PULS_INSTALLED_DATE_TIME
, P.PULS_INSTALLED_METER_VALUE, P.PULS_TRANSFORMER, P.PULS_METER

, (select M0.MTRVAL_METER
from T_METER_VALUE M0
where M0.MTRVAL_PULSE = P.PULS_PULSE and
M0.MTRVAL_DATE_TIME = :STAND_DATO_TID)
as STAND

, (select sum(M1.MTRVAL_VALUE)
from T_METER_VALUE M1
where M1.MTRVAL_PULSE = P.PULS_PULSE and
M1.MTRVAL_DATE_TIME >= :FRA_DATO_TID and
M1.MTRVAL_DATE_TIME <= :TIL_DATO_TID)
as FORBRUK

from ((T_NETWORK NW join T_SUBNET S on NW.NETW_NETWORK =
S.SUBN_NETWORK)
join T_NODE N on S.SUBN_SUBNET = N.NODE_SUBNET)
join T_PULSE P on N.NODE_NODE = P.PULS_NODE
where
NW.NETW_NETWORK = :NETW_NETWORK and
P.PULS_NAME <> 'Hovedmaaler' and
P.PULS_NAME <> 'Temp'

order by
NW.NETW_NAME, S.SUBN_COLLECTION, N.NODE_COLLECTION, P.PULS_PULSNR

Any suggestions ?

Thanks,
Jarle