Subject -804 SQLDA missing or incorrect version, incorrect number/type of variables
Author jarnilse
I use:
IBO 3.6.Bd
Omnibook, nt 2000 proffesional client.
nt 2000 server
Interbase 5.6 on both, 5.6 client and server on the client.

I develop on the client. The application and database.gdb was copied to the
server.
The database contained ground data. The application running on the server
fetches
data from external equipment (not computers), and posts it to the database.
All works find on the server. It same application works alright on the
client when connected to the original database, i.e. local.

When the client is connected to the server, and fetch data from the server I
sometimes recieve this exception:
ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -804
SQLDA missing or incorrect version, or incorrct number/type of variables

The problem was located to a procedure which builds a tree. The following
code fragment causes the
exception when NetwDS.Execute is evaluated/executesd.
NetwDS is a TIB_DSQL and DlItmCR is a TIB_Cursor.
The Netw.DS and DlItmCR is prepared and unprepared in a try finally end
block.
If I uncomment lines 2 and 3 the exception will not fire, and the
application will function when the client
is connected to the server. This is not necassery when application and
database is on the same machine.
Why?

if (not Assigned(netw)) or (Integer(netw.Data) <>
DlItmCR['DLITM_NETWORK']) then begin
{ NetwDS.Prepared then NetwDS.Unprepare; }
{ NetwDS.Prepare; }
NetwDS.Active:=False;

NetwDS.Params.ParamValues['NETW_NETWORK']:=DlItmCR['DLITM_NETWORK'];
NetwDS.Execute;
netw:=pTmSchTN.AddChildObject(tmsch, NetwDS['NETW_NAME'], // tmsch
and netw are treenodes
Pointer(DlItmCR.FieldByName('DLITM_NETWORK').AsInteger));
netw.ImageIndex:=GetNetworkImageIndex(NetwDS);
end;

Any suggestions ?

-- Jarle