Hänsel hat folgendes geschrieben : |
Hallo
kann jemand helfen?
Ich arbeite mit MSSQL und möchte wehrend der Laufzeit die Tabelle filtern und sortieren. die Filterung funktioniert , nur mit order by werden Fehler angezeigt. Was habe ich hier falsch gemacht.
Delphi-Quelltext 1: 2: 3: 4: 5:
| nr:=inttoStr(Datamodule3.ADOQuery2['ID']); Datamodule3.ADOQuery31.close; Datamodule3.ADOQuery31.SQL.Text:='Select * From MDV1 where ID ='+(nr); Datamodule3.ADOQuery31.open; |
Hänsel
Moderiert von Martok: Delphi-Tags hinzugefügt |
Wie schon oft von mir erwähnt, hasse ich Statements, die so aufgebaut werden.
Dafür gibt es Paramter.
In deinem Fall sähe das so aus:
Delphi-Quelltext
1: 2:
| Datamodule3.ADOQuery31.SQL.Text:='Select * From MDV1 where ID = :nr order by WE_nr'; Datamodule3.ADOQuery31.ParamByName('nr').value:= nr; |
:nr beschreibt hier einen Parameter, welcher in der Zeile darunter über
value mit der dazu passenden Variable beschrieben wird.
Vorteil der Parametrisierung sind zum Einen die Übersichtlichkeit und das sich Nicht-Kümmern, dass die Parameter im "richtigen" Format vorliegen. In deinem Fall müsstest du alles als
String konvertiert übergeben.
Dein spezielles Statement korrigiere ich dir dennoch, damit du weißt, wo der Fehler liegt/lag.
Delphi-Quelltext
1:
| Datamodule3.ADOQuery31.SQL.Text:='Select * From MDV1 where ID = ' + nr + ' order by WE_nr'; |
Gruß,
Stefan
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.