Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#14

Re: Optimieren der Datenbankabfragen für Reportpipelines

  Alt 10. Sep 2009, 12:30
..ich werd mal folgendes in meine Anwendung einbauen ..


Ich schicke für jede Tabelle NUR EIN SQL-Statement zum Server.
Somit hab ich auf der Clientseite alle Daten für den Report.
Clientseitig setz ich dann bei den verschiedenen AfterScroll-Ereignissen div. Bookmarks...
Wenn Bookmarks gesetzt werden - druckt der Reportbuilder nur die gebookmarkten Datensätze
Wenn keine Bookmarks gesetzt sind, switche ich die Query für die Reportpipeline auf eine leere (zQuery2)



Delphi-Quellcode:
procedure TForm1.SpeedButton5Click(Sender: TObject);
var i:integer;
begin
  ppDBPipeline1.DataSource:=DataSource1;
  zquery1.DisableControls;
  i:=0;

      ppDBPipeline1.ClearBookmarkList;
      zquery1.First;
          while not zquery1.Eof do
          begin

                if AnsiContainsText(zquery1.FieldByName('OBJECT_NAME').AsString,edit1.Text) then // <- somit spar ich mir ein SQL Statement
                begin
                ppDBPipeline1.SetBookmark;
                i:=1;
                end;

          zquery1.Next;
          end;




       if i = 0 then
       begin
       ppDBPipeline1.DataSource:=DataSource2; // keine Bookmarks wurden gesetzt
       end;

       ppReport1.Print;

  zquery1.EnableControls;
  zquery1.First;
end;

.ob das ganze dann wirklich schneller wird - werd ich noch berichten ..

LiGrü

Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat