Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suche in einer Access Datenbank mit Delphi (https://www.delphipraxis.net/54562-suche-einer-access-datenbank-mit-delphi.html)

Avax2k 7. Okt 2005 11:15

Re: Suche in einer Access Datenbank mit Delphi
 
Text ist aber wie auch CommandText lediglich eine Stringvariable, die vorher definiert wird.. somit könnte da auch Schrott := 'SELECT.... stehen wenn vorher var Schrott : String; als Variable definiert worden ist. Das mit den Hochkommas probiere ich jetzt mal.

Jens Schumann 7. Okt 2005 11:16

Re: Suche in einer Access Datenbank mit Delphi
 
Zitat:

Zitat von Avax2k
Text ist aber wie auch CommandText lediglich eine Stringvariable, die vorher definiert wird.. somit könnte da auch Schrott := 'SELECT.... stehen wenn vorher var Schrott : String; als Variable definiert worden ist.

CommandText ist die Eigenschaft von TADODataset, die das SQL-Statement aufnimmt. Ohne SQL-Statement kein Ergebnis.

shmia 7. Okt 2005 11:26

Re: Suche in einer Access Datenbank mit Delphi
 
Du könntest ein Volltext Filter einbauen.
Die Funktion CompareWildText findest du hier:
http://www.delphipraxis.net/internal...ct.php?t=21980
Delphi-Quellcode:
procedure TForm1.DoFilterRecord(DataSet: TDataSet;var Accept: Boolean);
var
   i : Integer;
   fields : TFields;
begin
   fields := dataset.Fields;
   for i := 0 to fields.Count-1 do
   begin
      if CompareWildText(DeinSuchTextString, fields[i].Text) then
      begin
         Accept := True;
         Exit;
      end;
   end;
   Accept := False;
end;
Jetzt musst du den Filter nur noch scharfmachen:
Delphi-Quellcode:
DeinSuchTextString := '*SEX*';
ADOQuery1.OnFilterRecord := self.DoFilterRecord;
ADOQuery1.Filtered := True;

dfried 7. Okt 2005 11:29

Re: Suche in einer Access Datenbank mit Delphi
 
Zitat:

Zitat von shmia
Du könntest ein Volltext Filter einbauen.

Das hätte aber den entscheidenden Nachteil, dass erst mal ALLE Datensätze gelesen werden müssen! KAnn bei grossen Tabellen ziemlich lange dauern. Wozu gibts denn SQL?

Avax2k 7. Okt 2005 11:34

Re: Suche in einer Access Datenbank mit Delphi
 
tatsächlich hat es an dem CommandText Befehl gelegen..hab Text sofort gegen CommandText ausgetauscht und es funktioniert.. allerdings nicht so wie ich es haben wollte..
sprich, wenn ich in der Bezeichnung nach "Eimer" suche und jetzt in der tabelle auch Holzeimer, Metalleimer usw. eben andere Wörter mit Eimer drin sind..geht der Marker nur zu einem dieser Eimer und zeigt die restlichen nicht an...was kann ich dagegen machen ?

habe nun einfach das erste ''%' durch ''' ersetzt dann sucht er mit dem Edit1.Text aber zeigt nunmehr die Zusammenhängenden Wörter nicht mehr an in denen Edit1.Text vorkommt ..hmm

shmia 7. Okt 2005 12:09

Re: Suche in einer Access Datenbank mit Delphi
 
Zitat:

Zitat von dfried
Zitat:

Zitat von shmia
Du könntest ein Volltext Filter einbauen.

Das hätte aber den entscheidenden Nachteil, dass erst mal ALLE Datensätze gelesen werden müssen! KAnn bei grossen Tabellen ziemlich lange dauern. Wozu gibts denn SQL?

Mein Vorschlag berücksichtigt alle Felder eines Datasets.
Möchte man das Gleiche in SQL erreichen dann würde folgendes herauskommen:
SQL-Code:
SELECT * FROM Kundenstamm WHERE (Name1 like :P1) or (Name2 like :P2) or (Name3 like :P3) or (PLZ like :P4) or ....
Die SQL Anweisung müsste dynamisch zur Laufzeit erzeugt werden.
Ich denke mein Vorschlag hat durchaus seine Anwendungsmöglichkeiten.

marabu 7. Okt 2005 12:25

Re: Suche in einer Access Datenbank mit Delphi
 
Hallo Avax2k,

die Suche arbeitet case sensitive - "Eimer" ist nicht gleich "eimer". Hier noch eine Variante, wie du das SQL Statement auch aufbauen kannst:

Delphi-Quellcode:
const
  sel = 'SELECT * FROM Datenbank WHERE UPPER(Bezeichnung) LIKE %s';
begin
  ...
  CommandText := Format(sel, [QuotedStr('%' + AnsiUppercase(Edit1.Text) + '%')]);
  ...
end;
Irgendwann wirst du dich dann für die Eigenschaft Parameters von TADODataSet interessieren und dir das entsprechende Kapitel in der Online Hilfe durchlesen.

marabu

Avax2k 7. Okt 2005 12:28

Re: Suche in einer Access Datenbank mit Delphi
 
danke für die zahlreiche Hilfe und die vielen Erläuterungen... sorry, wenn ich mich nicht all zu geschickt anstellen sollte


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz