Autor Beitrag
purehate
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 13.03.06 21:00 
Hi!

Ich versuche mithilfe von Sql auf meine Paradox Tabelle zuzugreifen. Jedenfalls soll er in der film.db in der Spalte FilmName nach einem Namen suchen der in edit1 steht. Nur will das nit so wirklich...


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button2Click(Sender: TObject);
begin

Query1.Active := False;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From film where FilmName like '+edit1.text);
Query1.Active := True;

end;



mfg
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mo 13.03.06 21:05 
versuchs mal damit. Like erwartet %text


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button2Click(Sender: TObject);  
//   Query1.Sql enthält 'Select * From film where FilmName like :Param'  
begin  
  Query1.Active := False;  
  Query1.parameters.paramByName('Param').value:='%'+edit1.text;
  Query1.Active := True;  
end;

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
purehate Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 13.03.06 21:17 
Also wenn ich

ausblenden Delphi-Quelltext
1:
Query1.params.paramByName('Param').value:='%'+edit1.text;					


nutze passiert scheinbar nichts. Bekomme keine Fehlermeldung, aber er springt immer noch nicht zum eingegebenen Film...

mfg
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 13.03.06 21:28 
Noch besser wäre es die
ausblenden Delphi-Quelltext
1:
Query1.parameters.paramByName('Param').value:='%'+edit1.text+'%';					

zu schreiben.
Dann findet er alle Einträge die den Suchstring enthalten, und nicht nur die, die auf den Suchstring enden.

_________________
Markus Kinzler.
cherry
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 136

WinXP - Professional
RAD Studio 2009
BeitragVerfasst: Di 14.03.06 09:23 
Also ich mach das immer so und es klappt! (bei mir jedenfalls)

ausblenden Delphi-Quelltext
1:
Query1.Sql.Add('SELECT * FROM film WHERE FilmName LIKE ''' + edit1.text + '%''');					

_________________
AM I TOO SEXY?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 14.03.06 09:41 
Wenn man mit Parametern arbeitet (was einfach einfacher ist), dann muss man die Parameter im SQL-Text aber auch angeben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
MyQuery.SQL.Text := 'Select * from Foo Where Field1 =:MyField and Field2 like :AnotherField';
MyQuery.Parameters.ParamByName ('MyField').DataType := ftInteger;
MyQuery.Parameters.ParamByName ('Another').DataType := ftString;
// Das o.g. kann man auch zur Designzeit einstellen
MyQuery.Parameters.ParamValues ['MyField'] := 12345;
MyQuery.Parameters.ParamValues ['AnotherField'] := '%'+Edit1.Text;
MyQuery.Active := True;

Klar, handgebissene SQL-Statements sind kompakt, aber spätestens beim Formatieren eines Floats oder Datums wird man Probleme bekommen, weil jeder PC und jede DB das anders macht bzw. erwartet. FloatToStr liefert vielleicht ein Komma als Dezimaltrennzeichen, die DB erwartet jedoch einen Punkt. Und wie ist das beim Datum? Mit Quotes? Ohne? DD-MM-YYYY, oder MM/DD/YYYY, oder DD.MMM.YY, oder wie?

Bei einer Verwendung einer parametrisierten Abfrage gibt man das Formatierungsproblem demjenigen, der was davon versteht, nämlich dem Provider/DB-Treiber o.ä.

_________________
Na denn, dann. Bis dann, denn.