Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Fr 02.02.18 16:02 
Hallo kann jemand helfen?

Ich arbeite mit einer MSSQL-Datenbank und habe folgende Frage: Wenn ich in Edit1-Feld einen Namen eingebe,wird auch nach diesen gesucht bzw. gefiltert. Ich möchte aber zum Beispiel nicht nur nach "Müller" suchen sondern nach alle Namen die mit M beginnen.
Was kann ich hier machen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
   Begin
   if Edit1.Text='' then
   Begin
     exit;
   End
   else
   Begin
   bez:=Edit1.Text;
   DataModule2.ADOQuery_Mieter.Close;
   DataModule2.ADOQuery_Mieter.SQL.Text:='Select * From MDV1 Where Name ='+bez+'';
   DataModule2.ADOQuery_Mieter.Open;
   z:=DataModule2.ADOQuery_Mieter.RecordCount;
   Label6.Caption:=inttostr(Z);


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Fr 02.02.18 16:55 
ausblenden SQL-Anweisung
1:
... WHERE Name LIKE "M%" ...					

sollte gehen.

ub60
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Fr 02.02.18 17:26 
Danke für den Hinweis. Ich hatte statt LIKE das = verwendet. Jetzt funktioniert es . Danke nochmals

Hänsel
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Fr 02.02.18 18:09 
Moin... :P

Nur so als Hinweis...
Mit LIKE im SQL kann der Index der Spalte nicht verwendet werden. Das bedeutet, daß über die gesamte Tabelle gesucht wird! Das solltest du ggf. einplanen... :zwinker:
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: So 04.02.18 19:33 
Ich Würde lieber Contains verwenden. Dazu muss allerdings für die Tabelle ein FTS Index erstellt worden sein.
Es wird also via Index gesucht (schnell).
Und "*" kann zum Suchen nach Wortteilen verwendet werden.

ausblenden SQL-Anweisung
1:
Select * From MDV1 Where Contains(Name, 'Sucht*');					

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?