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



BeitragVerfasst: Di 23.09.14 16:54 
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.

ausblenden 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); // Das fuktioniert  :D 
//Datamodule3.ADOQuery31.SQL.Text:='Select * From MDV1 where ID ='+(nr)order by WE_nr) ; // was habe ich hier falsch gemacht?  :(  :(  :( 
Datamodule3.ADOQuery31.open;


Hänsel

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Di 23.09.14 17:58 
Das order by muß natürlich wieder in Anführungszeichen
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Di 23.09.14 18:08 
Ich würde dringend empfehlen, wann immer möglich parametrisierte Statements zu verwenden, dann ergeben sich solche Probleme erst gar nicht.

Für diesen Beitrag haben gedankt: ZeitGeist87
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mi 24.09.14 08:02 
user profile iconHänsel hat folgendes geschrieben Zum zitierten Posting springen:
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.

ausblenden 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); // Das fuktioniert  :D 
//Datamodule3.ADOQuery31.SQL.Text:='Select * From MDV1 where ID ='+(nr)order by WE_nr) ; // was habe ich hier falsch gemacht?  :(  :(  :( 
Datamodule3.ADOQuery31.open;


Hänsel

Moderiert von user profile iconMartok: 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:

ausblenden 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.

ausblenden 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.
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mo 06.10.14 09:10 
Danke für die Hinweise.

Hänsel