Subject | Re: [IBO] Internal SchemaCache ERRCODE: 335544374 |
---|---|
Author | Thomas Steinmaurer |
Post date | 2007-08-01T06:24:11Z |
Hi Elmar,
changed from
FProcParamsAttrStmt: TIB_Statement;
to
FProcParamsAttrStmt: TIB_Dataset;
as well.
But you might have figured that out as well, because you wouldn't have
been able to compile the package without this change anyway. ;-)
--
Best Regards,
Thomas Steinmaurer
LogManager Series - Logging/Auditing Suites supporting
InterBase, Firebird, Advantage Database, MS SQL Server and
NexusDB V2
Upscene Productions
http://www.upscene.com
>> i moved my D2006 to IBO version 4.8.4My good old friend Beyond Compare reminds me that line 1196 needs to be
>> If i try to prepare the following TIB_Dsql
>>
>> EXECUTE PROCEDURE PM_SET_MASCHINENGRUPPE (?I_PMID, ?I_MASCHINENGRUPPE,
>> ?I_DATUM_GEPLANT)
>>
>> i get the message:
>>
>> Internal SchemaCache ERRCODE: 335544374
>> (D:\Programme\Borland\Addon\ibo\IB_Components.pas, Zeile 14518)
>>
>> With 4.7.16 it runs fine.
>>
>> Some idea?
>
> A new method in TIB_SchemaCache added in 4.8 and it's usage is causing
> this. I don't know if it was intentional to use TIB_Statement instead of
> TIB_Dataset (Jason?), but the following does the trick.
>
> - Open IB_Components.pas
> - Go to line 1209 and replace
>
> function GetProcParamsAttrStmt: TIB_Statement;
>
> with
>
> function GetProcParamsAttrStmt: TIB_Dataset;
>
>
> - Go to line 14536 and the replace the entire method
> GetProcParamsAttrStmt with the following.
>
> function TIB_SchemaCache.GetProcParamsAttrStmt: TIB_Dataset;
> begin
> if ( not Assigned( FProcParamsAttrStmt )) then
> begin
> FProcParamsAttrStmt := TIB_Dataset.Create( Connection );
> with FProcParamsAttrStmt do
> begin
> IB_Connection := Connection;
> IB_Transaction := Transaction;
> OnError := Self.DoHandleError;
> SQL.Add( 'select f.rdb$default_source' );
> SQL.Add( 'from rdb$procedure_parameters pp' );
> SQL.Add( 'join rdb$fields f' );
> SQL.Add( ' on f.rdb$field_name = pp.rdb$field_source' );
> SQL.Add( 'where pp.rdb$procedure_name = ?procedure_name' );
> SQL.Add( ' and pp.rdb$parameter_name = ?parameter_name' );
> end;
> end;
> if Connection.Connected then
> FProcParamsAttrStmt.Prepared := true;
> Result := FProcParamsAttrStmt;
> CheckTransactionEnded;
> end;
>
>
> - Go to line 14646 and replace
>
> Execute;
>
> with
>
> First;
>
>
> - Add
>
> Close;
>
> after the ts.LinkValues... statement in the same method.
>
>
> - Then you need to recompile one IBO package IBO40CRT_.... As *I'm*
> using D2006, it's called IBO40CRT_D2006 here.
>
changed from
FProcParamsAttrStmt: TIB_Statement;
to
FProcParamsAttrStmt: TIB_Dataset;
as well.
But you might have figured that out as well, because you wouldn't have
been able to compile the package without this change anyway. ;-)
--
Best Regards,
Thomas Steinmaurer
LogManager Series - Logging/Auditing Suites supporting
InterBase, Firebird, Advantage Database, MS SQL Server and
NexusDB V2
Upscene Productions
http://www.upscene.com