![]() |
Datenbank: firebird • Version: 2 • Zugriff über: interbase
sort by oder nicht sort by
Hallo
Mit folgenden Zeilen erstelle ich meine Abfrage.
Delphi-Quellcode:
in Combobox2.text steht die Feldbezeichnung nach der sortiert werden soll.
procedure TForm1.AbfrageClick(Sender: TObject);
var SQLString1 , SQLString2 :String; k:integer; begin Edit1.Text : blabla with Query1 do begin Active:=False; SQL.Clear; SQL.Add('Select * from '+ combobox1.text +' where Name Like :text1 '); SQL.Add('And Upper (Bezeichnung) Like Upper (:text2) order by '+ combobox2.Text +''); ParamByName('text1').asString := SQLString1; ParamByName('t blabla end; wenn Combobox2.text leer ist bekomme ich unexpected end Fehler. Was muß in combobox2.text stehen damit nicht sortiert wird? Danke für eure Hilfe. |
AW: sort by oder nicht sort by
Du musst prüfen, ob die Eingabe in ComboBox2.Text leer ist oder nicht (oder einen Text "ohne Sortierung" oder so enthält) und in dem Fall auch kein order by hinzufügen.
|
AW: sort by oder nicht sort by
@ jänicke
ja natürlich If then else Prüfung. Warum ich nicht selbst darauf gekommen bin? Danke. |
AW: sort by oder nicht sort by
Dein Code öffnet SQL-Injection Tür und Tor. Wenn ich als Tabellenname nun eingebe
'DeineTabelle where 1=0; DROP DATABASE DeineDB --'. Und dann ist deine Datenbank weg. Oder deine Tabelle. Oder deine Festplatte. Oder Du hast gerade einen Trojaner downgeloaded. Oder Oder Oder. Weiterhin würde ich versuchen, die Sortierung in-Memory vorzunehmen, d.h. die Daten in ein Dateset laden und dort sortieren. Einige TQuery-Abkömmlinge können das. Wenn nicht, bleibt noch ein TClientDataset oder ein Memory-Dataset, damit geht das auch sehr einfach. |
AW: sort by oder nicht sort by
Zitat:
|
AW: sort by oder nicht sort by
Sorge dafür, das die Combobox nicht editierbar ist (falls sie das nicht schon ist).
Verwende ein TDataset-Derivat, das die Angabe einer Tabelle erlaubt, z.B. TADODataset oder TADOTable, o.ä. Allerdings sollte es reichen, wenn Du die Combobox sowohl selbst füllst, als auch nicht editierbar machst. Die möglichen Tabellen solltest Du aus der Datenbank lesen können. |
AW: sort by oder nicht sort by
Noch besser ist die Verwendung von SQL Parametern für variable Anteile in der Query. Das geht jedoch nur für "Werte", nicht für Strukturelemente. Wenn das gefragt ist, wären Prepared Statements der bessere Weg. Beim von Furtbichler vogeschlagenen Weg gäbe es zumindest noch die relativ einfache Möglichkeit den Controls mit SendMessage() und WM_SETTEXT einen beliebigen Inhalt unterzujubeln, auch wenn das Control via UI nicht mehr editierbar ist.
Sowohl zu SQL Parametern als auch zu Prepared Statements dürfte sich einiges in der DP finden lassen. (Zumindest zu ersterem, bei PS sollte die jeweilige SQL Server Doku Aufschluss geben.) |
AW: sort by oder nicht sort by
Ich würde mal nicht so oft "blabla" in Quelltexte schreiben. Wo wird denn die Variable SqlString1 überhaupt mit Wert bestückt ? Im "blabla" irgendwo ? Solange das nicht geklärt ist braucht man zumindest nicht über SQL Injections o.ä. zu lamentieren. 8-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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