Einzelnen Beitrag anzeigen

kerim80

Registriert seit: 16. Jun 2005
9 Beiträge
 
#1

filter bei berechneten feldern

  Alt 4. Jul 2005, 01:30
Datenbank: Firebird • Zugriff über: ibconsole
Hallo zusammen,

habe folgendes Problem:

Ich habe eine Buchungsliste die ich mit folgender Funktion filtere.

Delphi-Quellcode:
function TListeBuchungen.GetSql: string;
var i: integer;
    s, sFilter, sPattern: string;
begin
  query.sql.clear;
  query.sql.add('SELECT ');
  query.sql.add('BUCHUNGLFDNR, ');
  query.sql.add('LFDNR, ');
  query.sql.add('BUCHUNGNR, ');
  query.sql.add('TICKETNR, ');
  query.sql.add('ADRNR, ');
  query.sql.add('VERANSTALTER, ');
  query.sql.add('HINABFLUGDATUM, ');
  query.sql.add('HINABFLUGZEIT, ');
  query.sql.add('HINABFLUGORT, ');
  query.sql.add('HINANKUNFTORT, ');
  query.sql.add('HINFLUGNR, ');
  query.sql.add(' ');
  query.sql.add('RUECKABFLUGDATUM, ');
  query.sql.add('RUECKABFLUGZEIT, ');
  query.sql.add('RUECKABFLUGORT, ');
  query.sql.add('RUECKANKUNFTORT, ');
  query.sql.add('RUECKFLUGNR, ');
  query.sql.add(' ');
  query.sql.add('NETTOPREIS, ');
  query.sql.add('ANZAHLUNG, ');
  query.sql.add('TAX, ');
  query.sql.add('MWST, ');
  query.sql.add('RABATT, ');
  query.sql.add('GEWINNPROZENT ');
  query.sql.add(' ');
  query.sql.add('FROM BUCHUNGEN ');
  query.sql.add('WHERE EXTRACT (YEAR FROM HINABFLUGDATUM) = ' +#39+ CBYear.Items.Strings[CBYear.itemindex] + #39);
  query.sql.add('%s ');
  query.sql.add('ORDER BY HINABFLUGDATUM ');

  Result := query.SQL.Text;
  //Result := 'SELECT * FROM adressen %s ORDER BY name';
  sFilter := AnsiUppercase(Trim(edit1.Text));
  s := '';
  if sFilter <> 'then begin
    sPattern := QuotedStr('%' + SFilter + '%');
    with query do
      for i := 0 to FieldCount - 1 do
        if Fields[i].DataType = ftString then begin
          if s <> 'then s := s + ' OR';
          s := s + Format(' UPPER(%s) LIKE %s', [LowerCase(Fields[i].FieldName), sPattern]);
        end;
    s := 'AND ' + s;
  end;
  Result := Format(Result, [s]);
end;
In dieser Liste habe ich auch berechnete Felder (NAME UND VORNAME) die ich manuell in das query eingefügt habe
und in dem OnCalcField-Ereignis mit folgendem code fülle:

Delphi-Quellcode:
procedure TListeBuchungen.queryCalcFields(DataSet: TDataSet);
begin
  inherited;
  with qAdressen do
  begin
     close;
     parambyname('ADRNR').asstring := dataset.fieldbyname('ADRNR').asstring;
     open;
  end;
  dataset.fieldbyname('NAME').asstring := qAdressenName.asstring;
  dataset.fieldbyname('VORNAME').asstring := qAdressenVorname.asstring;
end;
wie filtere ich nun nach diesen berechneten Feldern???
  Mit Zitat antworten Zitat