![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
order by als parambyname geht nicht?
hallo zusammen,
in meinen sql-statements weisse ich den where-Klauseln den Wert per Query1.ParamByName() zu. Leider bekomme ich beim Versuch dies bei der order by klausel auch so zu machen nen Fehler -804 Data typ unknown. Funktioniert das grundsätzlich nicht per Parameter? Danke Gruss KHH |
AW: order by als parambyname gent nicht?
Du kannst per Parameter nur Werte übergeben, aber keine Tabellen- oder Feldnamen.
|
AW: order by als parambyname gent nicht?
Zitat:
na dann übergebe ich den Feldnamen halt per Variable im Statement. Ich danke dir Gruss KHH |
AW: order by als parambyname gent nicht?
Zitat:
|
AW: order by als parambyname gent nicht?
Hallo,
man kann die Feldposition übergeben, also order by :p und den Parameter dann mit query.parambyname('p').asstring:='2' Gruß Ralf |
AW: order by als parambyname gent nicht?
Zitat:
|
AW: order by als parambyname gent nicht?
Zitat:
|
AW: order by als parambyname geht nicht?
Hallo,
die '2' ist kein Feldname, sondern sozusagen die Feldposition in der Liste derselectierten Felder Ich kann den sql z.B. so schreiben: select nr, name from kunden order by 1 wird nach Nummer sortiert. Ebenso möglich: select nr, name from kunden order by :p und dann den Wert für p als Parameter übergeben. Gruß Ralf |
AW: order by als parambyname geht nicht?
Zitat:
danke gruss KHH |
AW: order by als parambyname geht nicht?
Man sollte das Sortieren nicht dem Server überlassen. Das sind Perlen vor die Säue. Hol Dir die Datenmenge unsortiert und sortiere selbst in Memory.
Aber wenn Du es partout so willst, dann erstelle deine Query individuell:
Delphi-Quellcode:
myQuery.SQL.Text := Format('select * from tabelle order by %s',[aFieldName]);
|
AW: order by als parambyname geht nicht?
Zitat:
Hört sich für mich sehr nach der Aufforderung an, das Rad neu zu erfinden. Gruß K-H |
AW: order by als parambyname geht nicht?
Zitat:
Gruss KHH |
AW: order by als parambyname geht nicht?
Die Begründung ist eigentlich naheliegend ;) wenn man die Übertragungskosten/Rechenzeitkosten gegenüberstellt.
Soll die Liste einfach nur sortiert an den Rechner übergeben werden und die Sortierung wird nicht verändert, dann ist das die Aufgabe vom Server. Hat der Benutzer aber die Möglichkeit die Sortierkriterien zu wählen (Spalte a,b,c oder jetzt c,a,b) dann muss ich mir überlegen wo diese Sortierung erfolgen soll. Immer auf dem Server und die Daten alle naselang wieder an den Client übertragen, oder lieber doch gleich auf dem Client. Somit ist es eine Kosten/Nutzen-Rechnung wo die Sortierung erfolgt. Am Ergebnis ändert sich nichts, aber evtl. an der Zeit, die der Nutzer warten muss, bis die Daten sortiert angezeigt werden. |
AW: order by als parambyname geht nicht?
Der Hauptgrund ist doch einfach Folgender (wobei Sir Rufo nicht Unrecht hat): Ein RDBMS ist i.a. recht ausgelastet. Sortieroperationen wirken sich da einfach negativ auf die Wartezeit aus, vor allen Dingen dann, wenn alle Anwendungen so vorgehen. Dann ist der Server fast nur noch mit Sortieren beschäftigt. In der Folge geht er schon bei wesentlich weniger gleichzeitigen Zugriffen in die Knie.
Wenn Du natürlich eine RDBMS mit einigen wenigen Anwendern hast, und Dir sicher bist, nie in höhere Gefilde zu stoßen, dann kannst Du dir natürlich angewöhnen, die Sortieroperation immer vom Server erledigen zu lassen. Wundere dich dann aber nicht, wenn dein RDBMS immer 'etwas' größer sein muss, als die der Konkurrenz, um die gleiche Performance zu erreichen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz