AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben
Thema durchsuchen
Ansicht
Themen-Optionen

Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

Ein Thema von Luki206 · begonnen am 29. Mär 2014 · letzter Beitrag vom 31. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2      
Luki206
(Gast)

n/a Beiträge
 
#1

Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 29. Mär 2014, 15:13
Hi, ich stehe jetzt gerade vor dem Problem: Wie kann man ein Suchfeld so programmieren das ich passende Inhalte so angezeigt bekomme ohne das ich den kompletten Namen dieses Felds eingeben muss? Weil im Moment suche ich noch so im Client Data Set mit CDS.Locate(...); und da muss ich ja wirklich den Inhalt eines Feldes wirklich so in mein Edit Feld schreiben damit ich dort hin navigiert werde. Ich denke so an die Methode wie es die Forensuche auch macht das wenn keine Übereinstimmungen gefunden wurden so ähnliche Artikel angezeigt werden.
Danke
Luki
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 29. Mär 2014, 15:37
Versuch mal Such%
Gruß
Hansa
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#3

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 29. Mär 2014, 16:21
Hä? Wie jetzt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 29. Mär 2014, 16:33
Schau Dir die Parameter von Locate doch einmal genau an, besonders den letzten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#5

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 15:35
Ja ok danke, nur wie kann ich das ganze in eine Liste packen und nicht das es im DBGrid angezeigt wird? Also alle übereinstimmende Treffer?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 17:25
Ja ok danke, nur wie kann ich das ganze in eine Liste packen und nicht das es im DBGrid angezeigt wird? Also alle übereinstimmende Treffer?
Offensichtlich hast du DeddyH's Rat nicht befolgt, dir in der Online-Hilfe Locate einmal genauer anzuschauen, denn sonst würdest du bemerkt haben, daß Locate den Datensatz-Zeiger verschiebt, wenn die Methode etwas gefunden hat und keine Datenmenge zurückliefert, wie du das erwartest.

Für gefilterte Datenmengen setzt du entweder den Filter des Datasets ein – genau! die Namensähnlichkeit mit dem, was du suchst, ist nicht zufällig – oder du filterst bereits im Dataset via SQL-Statement, indem du die Where-Klausel entsprechend setzt.

Und jetzt frag bitte nicht gleich wieder, wie das geht, sondern schau dir zuerst einmal die entsprechenden Punkte in der Online-Hilfe an, dort steht das nämlich genau drin. Falls deine nur auf Englisch ist und du Englisch nicht gut kannst, benutze die hiesige Delphi-Referenz.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 17:28
Willst du suchen oder filtern?

Suchen
das Dataset wird von Vorne nach Hinten (oder umgekehrte Suchrichtung) durchsucht und bei jedem Treffer bleibt der Datensatzcursor im betreffenden Datensatz stehen.
Danach muss der Benutzer die Suche neu anstoßen wenn er weitere Treffer sehen möchte.
Sollte die Suche keinen (weiteren) Treffer ergeben muss der Benutzer durch eine Meldung oder sonstigen Hinweis darauf hingewiesen werden.

Die Locate -Methode ist auch eine Suchfunktion; sie hat aber den Mangel dass man nicht von der aktuellen Position weitersuchen kann. Ausserdem kann man mit Locate nicht in allen Feldern suchen ("Volltextsuche").

Filtern
Es werden nur Datensätze angezeigt die dem Suchmuster entsprechen. Dazu wird das Event OnFilterRecord verwendet.
fork me on Github

Geändert von sx2008 (30. Mär 2014 um 17:30 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 17:34
Filtern
Es werden nur Datensätze angezeigt die dem Suchmuster entsprechen. Dazu wird das Event OnFilterRecord verwendet.
Mit Verlaub, aber das ist nicht richtig. Auszug aus der Delphi-Referenz:

TClientDataSet.OnFilterRecord
Wird jedes Mal ausgelöst, wenn ein anderer Datensatz in der Datenmenge aktiviert und ein Filter verwendet wird.

TClientDataSet.Filter
Gibt den Text des aktuellen Filters einer Datenmenge an.

TClientDataSet.Filtered
Gibt an, ob für die Datenmenge ein Filter aktiv ist.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 19:23
Wenn eine DataSet gefiltert werden soll, dann muss Delphi-Referenz durchsuchenTDataSet.Filtered auf True und entweder man schreibt etwas in Delphi-Referenz durchsuchenTDataSet.Filter und/oder benutzt den Event

Delphi-Referenz durchsuchenTDataSet.OnFilterRecord:

Wenn der Datensatz die Kriterien erfüllt, dann setzt man einfach Accept auf true und der Datensatz wird in der gefilterten Menge mit angezeigt. Ansonsten einfach auf False und der Datensatz gehört nicht mehr zur gefilterten Menge.
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)

Geändert von Sir Rufo (30. Mär 2014 um 19:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Client Data Set suchen nach Stichwörter/Einzelnen Buchstaben

  Alt 30. Mär 2014, 19:38
Filtern
Es werden nur Datensätze angezeigt die dem Suchmuster entsprechen. Dazu wird das Event OnFilterRecord verwendet.
Mit Verlaub, aber das ist nicht richtig. ...
Ich bin davon ausgegangen dass ein Volltextfilter für alle Felder des Datasets durchgeführt werden soll.
Die eingebauten Fähigkeiten des Datasets sind dafür aber nicht ausreichend weshalb auf jeden Fall Sourcecode nötig wird um eine gute und allgemeingültige Lösung zu finden.
Dazu das Kochrezept:
Delphi-Quellcode:
Accept := False;
for i := 0 to Dataset.Fields.Count-1 do
begin
  f := Dataset.Fields[i];
  if not f.IsNull and f.Visible then
  begin
    // Ggf. müssen bestimmte Feldtypen ausgeschlossen werden (Felder mit binärem Inhalt, TBlobField)

    s := f.Text;
    // die WildCompare Funktion liefert True wenn ein String auf das Suchmuster, das ? und * enthalten darf, passt
    // passende Funktionen findet man hier in der DP
    // Wer mag kann dafür auch reguläre Ausdrücke einsetzen (könnte aber den Benutzer damit überfordern)
    if WildCompare(s, suchpattern) then
    begin
      Accept := True;
      break;
    end;
  end;
end;
fork me on Github

Geändert von sx2008 (30. Mär 2014 um 19:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz