AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aufgaben mit LiveBindings und Delphi-DB's erledigen

Ein Thema von Harry Stahl · begonnen am 2. Mai 2016 · letzter Beitrag vom 10. Mai 2016
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Aufgaben mit LiveBindings und Delphi-DB's erledigen

  Alt 4. Mai 2016, 20:10
Ähm, du kannst dir die Specifications definieren und zusammenbauen wie du möchtest und das immer wieder wie du möchtest
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#2

AW: Aufgaben mit LiveBindings und Delphi-DB's erledigen

  Alt 4. Mai 2016, 22:16
Ok, das Event (OnFilterRecord) behalte ich mal in Reserve. Momentan kann ich es wie gewünscht per "Like" lösen, wobei man das in Zusammenhang mit "%" nutzen muss.

Der folgende Filter liefert mir wie gewünscht eine Suche über alle Felder, für den Begriff "grid" alle Einträge zurück, der ihn als Teil enthält (zusätzlich wird noch ein StandardFilter berücksichtigt [FrameWorkFilter], wenn der nicht Leer ist):

Delphi-Quellcode:
procedure TF_ConvertList.bnFindChange(Sender: TObject);
var
  find, AllFieldsFilter: String;
  L: Integer;
begin
  cds1.Filtered := False;

  if bnfind.Text <> 'then begin
    find := QuotedStr ('%'+ bnFind.Text+'%'); //<-- "%" mit Like, "*" für PartialRight-Suche
   
    for L := 0 to cds1.FieldCount-1 do begin
      if L = cds1.FieldCount-1 then begin
        AllFieldsFilter := AllFieldsFilter + cds1.FieldList[L].FieldName + ' like ' + find;
      end else begin
        AllFieldsFilter := AllFieldsFilter + cds1.FieldList[L].FieldName + ' like ' + find + ' OR ';
      end;
    end;

    if FrameWorkFilter <> 'then begin
      cds1.Filter := FrameWorkFilter + ' and (' + AllFieldsFilter + ')';
    end else begin
      cds1.Filter := AllFieldsFilter;
    end;
  end else begin
    cds1.Filter := FrameWorkFilter;
  end;

  cds1.Filtered := (bnFind.Text <> '') or (FrameWorkFilter <> '');
end;
vgl. Resultat der Suche im anliegenden Screenshot. Einen Platzhalter für Feldnamen, der für alle Felder steht, scheint es ja nicht zu geben (Hinweis, ich verwende hier nur das ClientDataset mit dem Datasource, ohne eine Datenbank dahinter).

Insgesamt scheint sich ja da eine erfreuliche Bandbreite an Möglichkeiten aufzutun.
Angehängte Grafiken
Dateityp: jpg Result.jpg (100,6 KB, 19x aufgerufen)

Geändert von Harry Stahl ( 4. Mai 2016 um 22:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz