AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken order by als parambyname geht nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

order by als parambyname geht nicht?

Ein Thema von khh · begonnen am 16. Feb 2011 · letzter Beitrag vom 16. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

order by als parambyname geht nicht?

  Alt 16. Feb 2011, 11:59
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
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
Karl-Heinz

Geändert von khh (16. Feb 2011 um 12:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:03
Du kannst per Parameter nur Werte übergeben, aber keine Tabellen- oder Feldnamen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:06
Du kannst per Parameter nur Werte übergeben, aber keine Tabellen- oder Feldnamen.
hab ich schon befürchtet

na dann übergebe ich den Feldnamen halt per Variable im Statement.


Ich danke dir

Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:11
Du kannst per Parameter nur Werte übergeben, aber keine Tabellen- oder Feldnamen.
hab ich schon befürchtet

na dann übergebe ich den Feldnamen halt per Variable im Statement.
Eine solche Möglichkeit würde (teilweise) verhindern das der Query Analyser schon den Ausführungpfad optimiert bestimmen kann und Geschwindigkeitsvorteile durch wiederholte Ausführung nicht vorhanden wären.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
536 Beiträge
 
Delphi 12 Athens
 
#5

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:15
Hallo,

man kann die Feldposition übergeben, also order by :p und den Parameter dann mit query.parambyname('p').asstring:='2'

Gruß

Ralf
Ralf
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#6

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:26
Hallo,

man kann die Feldposition übergeben, also order by :p und den Parameter dann mit query.parambyname('p').asstring:='2'

Gruß

Ralf
mh genau das geht aber bei order by wohl nicht, wobei 2 in deinem Beispiel ja auch kein Feldname ist.
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#7

AW: order by als parambyname gent nicht?

  Alt 16. Feb 2011, 12:27
Du kannst per Parameter nur Werte übergeben, aber keine Tabellen- oder Feldnamen.
hab ich schon befürchtet

na dann übergebe ich den Feldnamen halt per Variable im Statement.
Eine solche Möglichkeit würde (teilweise) verhindern das der Query Analyser schon den Ausführungpfad optimiert bestimmen kann und Geschwindigkeitsvorteile durch wiederholte Ausführung nicht vorhanden wären.
und wie würdest du es dann anders machen?
Karl-Heinz
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
536 Beiträge
 
Delphi 12 Athens
 
#8

AW: order by als parambyname geht nicht?

  Alt 16. Feb 2011, 13:14
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
Ralf
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#9

AW: order by als parambyname geht nicht?

  Alt 16. Feb 2011, 13:17
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
ok, werd ich ausprobieren

danke gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: order by als parambyname geht nicht?

  Alt 16. Feb 2011, 15:25
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:
myQuery.SQL.Text := Format('select * from tabelle order by %s',[aFieldName]);
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:07 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