Subject | Re: [IBO] Internal SchemaCache ERRCODE: 335544374 |
---|---|
Author | Thomas Steinmaurer |
Post date | 2007-07-31T20:23:48Z |
Hi Elmar,
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.
HTH!
--
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.4A new method in TIB_SchemaCache added in 4.8 and it's usage is causing
> 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?
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.
HTH!
--
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