AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Suche in einer Access Datenbank mit Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Suche in einer Access Datenbank mit Delphi

Ein Thema von Avax2k · begonnen am 6. Okt 2005 · letzter Beitrag vom 7. Okt 2005
Antwort Antwort
Seite 2 von 2     12   
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#11

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 10:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 10:16
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#13

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 10:26
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;
Andreas
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#14

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 10:29
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?
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#15

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 10:34
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#16

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 11:09
Zitat von dfried:
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:
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.
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 11:25
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
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#18

Re: Suche in einer Access Datenbank mit Delphi

  Alt 7. Okt 2005, 11:28
danke für die zahlreiche Hilfe und die vielen Erläuterungen... sorry, wenn ich mich nicht all zu geschickt anstellen sollte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:50 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