AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Parameter Übergabe in SQL-Abfrage

Parameter Übergabe in SQL-Abfrage

Ein Thema von compi22 · begonnen am 11. Mai 2005 · letzter Beitrag vom 12. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2   
compi22

Registriert seit: 6. Mai 2005
7 Beiträge
 
#1

Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 19:02
Datenbank: SQL-Server • Zugriff über: ADO
[/cpp]
Hallo Leute,

weiss jemand wie ich in einer SQL-Abfrage einen Parameter für den Abfragezuatz "Order by" übergeben kann.
Bei unten gezeigten Quelltext passiert nichts.
Paramterübergaben bei Where-Klauseln sind an sich kein Thema
Aber hier!!!

ADOQuery1->SQL->Add("Select Table1.Kennummer,Table1.Mon,Table1.Tag");
ADOQuery1->SQL->Add("FROM Table1 ");
ADOQuery1->SQL->Add("Order by:_Sort ");
ADOQuery1->Parameters->ParamByName("_Sort")->Value=Feld;
ADOQuery1->ExecSQL();

Danke!!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 20:33
Hai compi22,

ich habe deinen Code jetzt nicht näher geprüft. Aber eines sollte auffallen

Delphi-Referenz durchsuchen.ExecSQL ist dafür da einen SQL-Befehl auszuführen der keine Rückgabemenge besitzt (INSERT, UPDATE..).
Bei einem SELECT musst Du .Open verwenden.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#3

Re: Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 21:01
was soll das - das ist ein feldname, und das kann man nicht parametrisieren.

bau dir doch einfach den string für die abfrage selbst zusammen: ... "ORDER BY " + Feld ...

jedenfalls schneller als einen thread zu eröffnen
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 22:39
Hallo bttb930,

"was soll das", frage ich Dich. Die Frage von compi22 widerspricht keiner Regel und ist auch sonst eine ganz normale Frage. Deine patzige Antwort ist alles andere als freundlich und außerdem unangebracht. Reiß Dich in Zukunkt zusammen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
compi22

Registriert seit: 6. Mai 2005
7 Beiträge
 
#5

Re: Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 23:05
Hallo MrSpock,

danke für den Hinweis-> klappt trotzdem nicht.

An bttb930

kannst Du bitte Deine Antwort etwas konkretisieren
Danke!!
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Parameter Übergabe in SQL-Abfrage

  Alt 11. Mai 2005, 23:07
Soweit ich weiss und bisher auch zu meinem Leidwesen verifizieren konnte, sind Parameter nur in WHERE und JOIN zulässig. By ORDER, GROUP usw. musst Du leider weiter mit String-Zusammensetzungen arbeiten. Du kannst Dir aber z.B. so einer Hilfsprocedur verwenden. Nachteil: Der Gesamte Originale ORDER BY muss in nur einer, und zwar der letzten Zeile (laut SQL Syntax) stehen.
Delphi-Quellcode:
  procedure ApplySortToQuery(AQuery: TADSQuery; ASortArray: array of string);
  var
    I: Integer;
    ASortString, AFilter: string;
  begin
    ASortString := '';
    for I := 0 to High(ASortArray) do
      ASortString := ASortString + ASortArray[I];
    System.Delete(ASortString, Length(ASortString)-1, 2);
    AFilter := AQuery.Filter;
    try
      AQuery.DisableControls;
      AQuery.Close;
      AQuery.Filter := '';

      if pos('order by', AQuery.SQL.Strings[AQuery.SQL.Count-1]) > 0 then
         AQuery.SQL.Delete(AQuery.SQL.Count-1);

      if ASortString <> 'then ASortString := 'order by ' + ASortString;
      AQuery.SQL.Add(ASortString);
    finally
      AQuery.Open;
      AQuery.Filter := AFilter;
      AQuery.EnableControls;
    end;
  end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Parameter Übergabe in SQL-Abfrage

  Alt 12. Mai 2005, 08:28
Zitat von Union:
Soweit ich weiss und bisher auch zu meinem Leidwesen verifizieren konnte, sind Parameter nur in WHERE und JOIN zulässig. By ORDER, GROUP usw. musst Du leider weiter mit String-Zusammensetzungen arbeiten.
Habe es für MS SQL-Server direkt im Query Analyser überprüft. In ORDER BY-Teil werden @Px (für Parameter) nicht erkannt.

Zitat von Union:
Nachteil: Der Gesamte Originale ORDER BY muss in nur einer, und zwar der letzten Zeile (laut SQL Syntax) stehen.
Stimmt nicht. Zeilenumbrüche stören nicht:
SQL-Code:
select
*
from
mytable
order
by
feld1,
feld2
ist ein gültiges konstrukt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Parameter Übergabe in SQL-Abfrage

  Alt 12. Mai 2005, 08:46
Hai ihr,

ich habe das eben mal mit mySQL und den Zeos-Komponenten versucht. Da geht es:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ZConnection1.Disconnect;
  ZConnection1.Connect;
  with ZQuery1 do
  begin
    Close;
    SQL.Text := 'SELECT * FROM test1 ORDER BY :feld';
    ParamCheck := True;
    ParamByName('feld').AsString := Edit1.Text;
    Open;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Parameter Übergabe in SQL-Abfrage

  Alt 12. Mai 2005, 09:48
Zitat von Sharky:
Hai ihr,

ich habe das eben mal mit mySQL und den Zeos-Komponenten versucht. Da geht es:
Das hatten wir doch schonmal (Ist aber schon ein Weilchen her...)
Er sortietrt nach dem String im Parameter. Also effektiv sortiert eine Folge gleicher Werte.

Feldnamen über Parameter zu besetzen würde doch das eigentliche Statement verändern, einen neuen Plan erforndern und damit das Prinzip von Parametern komplett witzlos machen.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Parameter Übergabe in SQL-Abfrage

  Alt 12. Mai 2005, 10:06
Zitat von Robert_G:
..Also effektiv sortiert eine Folge gleicher Werte. ....
Hmmm bei meinem Test hat er nach dem Feldnamen sortiert den ich via Edit1 übergeben habe.

Zitat:
,,, einen neuen Plan erforndern und damit das Prinzip von Parametern komplett witzlos machen.
Das ist natürlich richtig.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz