Subject Re: [IBO] -804 SQLDA missing or incorrect version, incorrect number/type of variables
Author Svein Erling Tysvær
Why unprepare before setting active to false?? I think this sequence seems
more logical

NetwDS.Active:=False;
if NetwDS.Prepared then NetwDS.Unprepare; //I expect you have an if here
NetwDS.Prepare;

HTH,
Set

At 22:13 23.11.2000 -0800, you wrote:
>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
>
>
>
>
>
>
>
>