Subject | Re: TIB_Query vs. TIBOQuery??? |
---|---|
Author | Simon Benedicic |
Post date | 2011-02-24T19:44:49Z |
--- In IBObjects@yahoogroups.com, "gsndelphicoder" <branden@...> wrote:
There is a very "bad" sql in daIBO.pas that causes Firebird / Interbase to fetch all data from database in some cases.
Just edit daIBO.pas like this and you will see big improvements in ReportBuilder performance:
{-------------------------------------------------------------}
{ TdaIBODataSet.SetDataName }
procedure TdaIBODataSet.SetDataName(const aDataName: String);
begin
inherited SetDataName(aDataName);
{dataset cannot be active to set data name}
if GetQuery.Active then
FQuery.Active := False;
{construct an SQL statment that returns an empty result set,
this is used to get the field information }
{ Simon, 2009-06-20, original code ... very slow sql !
WARNING !!! Below fix is only for Firebird ...
use ROWS if you use Interbase
FQuery.SQL.Text := 'SELECT * FROM ' + aDataName +
' WHERE ''c'' <> ''c'' ';
}
FQuery.SQL.Text := 'SELECT FIRST 0 '+ aDataName+'.* FROM ' + aDataName;
end; {procedure, SetDataName}
Best regards,
Simon
> This issue is only with the first time the query is opened.Hi,
>
There is a very "bad" sql in daIBO.pas that causes Firebird / Interbase to fetch all data from database in some cases.
Just edit daIBO.pas like this and you will see big improvements in ReportBuilder performance:
{-------------------------------------------------------------}
{ TdaIBODataSet.SetDataName }
procedure TdaIBODataSet.SetDataName(const aDataName: String);
begin
inherited SetDataName(aDataName);
{dataset cannot be active to set data name}
if GetQuery.Active then
FQuery.Active := False;
{construct an SQL statment that returns an empty result set,
this is used to get the field information }
{ Simon, 2009-06-20, original code ... very slow sql !
WARNING !!! Below fix is only for Firebird ...
use ROWS if you use Interbase
FQuery.SQL.Text := 'SELECT * FROM ' + aDataName +
' WHERE ''c'' <> ''c'' ';
}
FQuery.SQL.Text := 'SELECT FIRST 0 '+ aDataName+'.* FROM ' + aDataName;
end; {procedure, SetDataName}
Best regards,
Simon