AGB  ·  Datenschutz  ·  Impressum  







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

DBGrid durchsuchen

Ein Thema von Tim Henford · begonnen am 8. Mai 2007 · letzter Beitrag vom 8. Mai 2007
Antwort Antwort
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#1

DBGrid durchsuchen

  Alt 8. Mai 2007, 20:57
Datenbank: MSSQL • Zugriff über: ADO
Hallo,

ich versuche gerade eine Suchfunktion für ein DBGrid zu realisieren.
Und zwar hat ich mir das so vorgestellt, dass man das Feld, in dem man suchen will, auswählt und dann in ein EditFeld den Suchbegriff eingibt.

Nun dacht ich, ich könnte über eine Filter-Option
Delphi-Quellcode:
    Query.Filter:= 'Feld1='''+Edit1.Text+'''';
    Query.Filtered:= true;

    Query.First;
    while not Query.Eof do begin
      DBGrid1.SelectedRows.CurrentRowSelected := true;
      Query.Next;
    end;

  Query.Filtered:= false;
die interessanten Eintäge filtern, markieren und wieder entfiltern, aber dann stimmen die Indizes nach dem Entfiltern nicht mehr.

Gibt es eine bessere Lösung, die funktioniert?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 21:00
Was meinst du mit Index? Ich würde die IDs zur eindeutigen Identifizierung eines datensatzes verwenden.
Willst du Filtern oder Suchen? Schau dir mal .Lookup an. Oder per SQL
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#3

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 21:11
Im Prinzip möcht ich zum Einen einfach alle Einträge, die den Suchtext enthalten markieren lassen.
Wahrscheinlich kann ich da auch einfach den Filter drauflassen.

Es scheint mir so, dass wenn ich Filtere und alle gefilterten Einträge einfach markiere, merkt er sich:
Index 0,1,2 sind markiert.
Filter raus: 0,1,2 sind immernoch markiert, aber das sind ja andere Zeilen, nicht die Zeilen 12,17,29 in denen der Text nun wirklich ist.

Zum anderen wäre es auch interessant, die Row zu finden, in der zum ersten Mal der Suchtext vorkommt und man dann auf "Weitersuchen" klicken kann, um immer den nächsten zu finden und zu markieren.


Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 21:14
Das macht .Locate
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#5

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 21:32
wie kriegt man dann "weitersuchen" hin?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 21:56
Einfach nocheinmal aufrufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#7

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 22:09
bei
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query.Locate('Felda','test',[loPartialKey,loCaseInsensitive]);
end

markiert er immer nur den ersten??
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 22:21
Bei TAdoQuery kannst du auch .Seek Antesten
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: DBGrid durchsuchen

  Alt 8. Mai 2007, 22:45
Nicht über DBGrid filtern oder suchen, sondern direkt über dem zugrunde liegenden Dataset. Dort kannst du die Eigenschaft Filter setzen. Nicht vergessen Filtered auf true zu setzen.
Jedoch prinzipiell, wenn es sich um viele (paar tausend Datensätze und mehr) handelt, würde ich nicht mehr lokal filtern sondern einen angepassten SQL Befehl neu an den Server schicken.
  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 00:26 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