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



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: 699
Erhaltene Danke: 102



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: 102



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: 1182
Erhaltene Danke: 96

Win7
DXE2 Prof, 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*');					

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.