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
 
#4

AW: Wie Firebird richtig abfragen weil drucken extrem langsam..

  Alt 24. Jun 2011, 09:37
Hallo shmia und p80286,
danke für die Informationen.

Indexes hab ich, denk ich mal, richtig gesetzt, und die Datenbankstruktur ist, na ja.. wie soll ich sagen... eine "gewachsene Geschichte" ... da mal was dazu, dort mal was weg.. aber passend.

Ein paar Zeilen hab ich für das "Grid select" gefunden, das die ganze Sache wieder ein bisserl schneller macht:
Quelle: http://www.tek-tips.com/viewthread.c...37295&page=242

Delphi-Quellcode:
procedure TfrmMainData.Button1Click(Sender: TObject);
var
   si : SmallInt; // loop counter
   sl : tStringList; // temporary storage
begin

   sl := tStringList.Create;
   try

      // First, get the selected ID Values.
      with sl, dbGrid1, DataSource.DataSet do
      if SelectedRows.Count > 0 then
      begin
         add( 'where' );
         for si := 0 to SelectedRows.Count - 1 do
         begin
            GotoBookMark( pointer( SelectedRows.Items[ si ] ) );
            add( 'o.CustNo = ' +
                 fieldByName( 'CustNo' ).asString );
            if si < SelectedRows.Count - 1 then
               add( ' OR ' );
         end;
      end;

      // Now, revise the query
      with dmMainData.Query1 do
      begin
         if active then close;
         SQL.clear;
         SQL.add( 'select distinct * from orders o' );
         SQL.AddStrings( sl );
         Open;
      end;
   
   finally
      freeAndNil( sl );
   end;

end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat