Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Welchen SQL Parser benutzt ihr? (https://www.delphipraxis.net/135305-welchen-sql-parser-benutzt-ihr.html)

alzaimar 11. Jun 2009 05:59

Re: Welchen SQL Parser benutzt ihr?
 
Zitat:

Zitat von heri
ich möchte meiner Applikation ein SQL Statement manipulieren - zB im SELECT ein zusätzliches Feld einfügen, die WHERE Clause löschen etc. etc.

Das kann man ja alles selber machen aber wenn's dann zB heisst SELECT x=(SELECT y from...) dann wirds schon spannender...

So würde ich das für einen falschen Ansatz halten. Ein SELECT ist ja letztendlich die textuelle Darstellung einer Datenbankanfrage. Diese Anfrage würde ich als Klassenmodell implementieren. Diese Query-Klasse kann dann eine Anfrage 'rendern'. Z.B. grafisch, als deutschen Satz oder eben als SQL-Query.

In SELECT-Statements rumfrickeln halte ich für sehr exotisch. Beschreib doch mal, wieso du auf diese Lösung gekommen bist.

heri 11. Jun 2009 18:13

Re: Welchen SQL Parser benutzt ihr?
 
Vielen Dank für die ganzen Inputs!

Ich habe die verschiedenen Vorschläge und was ich sonst noch so gefunden habe mal verglichen, bin aber noch zu keinem endgültigen Entschluss gekommen.

Nochmals kurz zu dem was ich machen möchte:
Ich habe eine vordefinierte Abfrage - zB:
SQL-Code:
Select * from tKunden
Zusätzlich kann der Benutzer definieren in welchen Spalten ein Suchwert gesucht werden soll - zB in den Spalten:
Name, Vorname, Ort

jetzt habe ich ein Feld in welchem der Benutzer einen Suchwert eingeben kann - zB: %xy%

und so sollte auf einfachste Weise mein SQL Statement gebaut werden:
SQL-Code:
Select * from tKunden where Name like '%xy%' OR Vorname like '%xy%' OR Ort like '%xy%'
ist das so exotisch?

zu beachten ist dabei natürlich - das ist nur das einfachste Beispiel einer vordefinierten Abfrage!

Meine Vorstellung - "frei von der Leber" - ist sowas wie :

Delphi-Quellcode:
with TMySQLParser.Create('select * from tKunden') do
var
sTable: String;
begin

  sTable := getTable;

  addfield('land');
  deletefield('telefon');

  addwhere('name like ''%xy%''');

  addorderby('name');

  etc.etc.

  Free;
end;

@mschaefer:
der RAK_SQLParser ist wirklich gewaltig!
habe bei dieser Lösung ein bisschen die Angst "mit Kanonen auf Spatzen zu schiessen"

aber es ist schon so - SQL ist riesig und da brauchst glaub schlussendlich sowas gewaltiges um möglichst flexibel zu sein!

Die Muhkuh 11. Jun 2009 18:46

Re: Welchen SQL Parser benutzt ihr?
 
So simpel wie Dein Beispiel aussieht, brauchst da ja keinen richtigen "Parser". Da kannst Du Dir auch selbst was basteln.

Das Ding soll Dir nachher nur den SQL-String geben, welchen Du an die ausführende Komponente übergibst?

mschaefer 11. Jun 2009 19:59

Re: Welchen SQL Parser benutzt ihr?
 
Naja das fängt ja immer klein an und wächst dann doch recht schnell in den Anforderungen:

- Die Buttons für das Umsortieren der Datenmenge am Listenkopf
- Das Suchfeld
- Datumsbereich in dem gesucht werden soll

da wird das dann schnell aufwendiger. Leider habe ich keinen wirklich gut dokumentierten
Parser gefunden. Ein live-Beispiel von alzaimer würde mich auch faszinieren, befürchte aber
das Rendern der SQL wird auch nicht einfacher..

Grüße // Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Seite 2 von 2     12   

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