Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Lange Strings/Queries im Quellcode umbrechen (https://www.delphipraxis.net/102930-lange-strings-queries-im-quellcode-umbrechen.html)

white-desert 7. Nov 2007 07:12


Lange Strings/Queries im Quellcode umbrechen
 
Hai,
hier gehts mir um die Übersichtlichkeit des Quellcodes.
In meinem letzten Projekt habe ich Query-Aufrufe wie diese:
Delphi-Quellcode:
Query :=  'SELECT '+
             'Id, '+
             '(SELECT '+
                 'Baustufen.name '+
               'FROM Baustufen WHERE '+
                 'projekte_baustufen_links.Baustufe_Id = ('+
                   'SELECT ID from my_ids WHERE id = '+ ExtBstId +' ORDER BY Id ASC Limit 1'+
                 ') LIMIT 1), '+
             'von, '+
             'bis '+
           'FROM Projekte_Baustufen_Links '+
           'WHERE Projekt_Id = '+Pr_Id + 
           ' ORDER BY Projekte_Baustufen_Links.Baustufe_Id ASC ';
Eines sieht wohl jeder: Dieses String-Gebilde ist zu unübersichtlich, vor allem wegen diesen vielen Anführungszeichen.

In PHP könnte man das ja so schreiben:
Code:
$Query = 'SELECT
             Id,
             (SELECT
                Baustufen.name
                FROM Baustufen WHERE
                  projekte_baustufen_links.Baustufe_Id = (
                   SELECT ID from my_ids WHERE id = '. $ExtBstId .' ORDER BY Id ASC Limit 1
                  ) LIMIT 1),
             von,
             bis
           FROM Projekte_Baustufen_Links
           WHERE Projekt_Id = '.$Pr_Id .'
           ORDER BY Projekte_Baustufen_Links.Baustufe_Id ASC ';
Das sieht schon viel einfacher aus und ist auch schneller zu schreiben. Gibt es denn keine ähnliche
Schnell-Schreibweise bei Delphi? Evtl. irgendwelche Prozessorbefehle?
Also dass man einen ewig langen String gaaanz einfach umbrechen und mit Variablen bestuecken kann?

Danke im Voraus für eure Hilfe!

marabu 7. Nov 2007 09:28

Re: Lange Strings/Queries im Quellcode umbrechen
 
Hallo,

dein Statement sieht bei mir so aus:

SQL-Code:
SELECT id, (
   SELECT name
   FROM Baustufen
   WHERE L.Baustufe_Id = (
      SELECT ID
      FROM my_ids
      WHERE id = :ExtBstId
      ORDER BY Id ASC
      Limit 1
      )
   LIMIT 1
   ), von, bis
FROM Projekte_Baustufen_Links L
WHERE Projekt_Id = :Pr_Id
ORDER BY L.Baustufe_Id ASC
Manchmal sind auch noch Format-Strings (%s) enthalten. Entwerfen kann ich die Statements im SQL-Editor eines SQL-Werkzeuges. Speichern werde ich es je nach Rahmenbedingung direkt in der Datenbank oder in einer Datei. In einer INI-Datei oder als ResourceString darf das Statement gerne wieder eine einzelne Zeile sein. Muss ich es später überarbeiten, dann bringe ich es wieder in Form - zur Not mit einem SQL Beautifier.

Grüße vom marabu

Reinhard Kern 7. Nov 2007 10:19

Re: Lange Strings/Queries im Quellcode umbrechen
 
Zitat:

Zitat von white-desert
Hai,
...
Also dass man einen ewig langen String gaaanz einfach umbrechen und mit Variablen bestuecken kann?

Danke im Voraus für eure Hilfe!

Hallo,

in Delphi/Pascal ist eine String-Konstante auf eine Zeile beschränkt. Ich habe für längere Texte auch schon überlegt, diese in einer anderen Sprache (C,Assembler) zu formulieren, aber Delphi kann ja keine fremden Objects linken, und übersichtlicher ist es auch nicht, wenn die Strings woanders stehen. Bei langen Texten lese ich notfalls von einer txt-Datei ein.

Gruss Reinhard

oldmax 7. Nov 2007 12:24

Re: Lange Strings/Queries im Quellcode umbrechen
 
Hi
Nun, ich weiß nicht, ob's unbedingt besser ist, aber ich nehm auch eine Stringvariable und "addier" einfach die Gruppen
Delphi-Quellcode:
Query:='Select * from '+ TabelleName;
Query:=Query+' Where ( a= '+ StrWert+ ')';
Query:=Query+' Or( x= '''+ IntToStr(IntWert)+ ''')';
oder so ähnlich...
Im Allgemeinen kopier ich mir die Strings aus einem SQL-Generator und zerleg sie dann in sinnvolle Abschnitte.
Vorteil, ich kann mir einfache oder auch komplizierte Strings immer wieder kopieren und mit wenigen Handgriffen anpassen.
Gruß oldmax

white-desert 8. Nov 2007 09:54

Re: Lange Strings/Queries im Quellcode umbrechen
 
danke für eure Vorschläge! cu

alzaimar 8. Nov 2007 10:00

Re: Lange Strings/Queries im Quellcode umbrechen
 
Auch wenn der Fragesteller zufrieden ist...

... Wenn eine Query zu lang ist, packe ich sie in eine View, gebe dem einen aussagekräftigen Namen und habe dann zudem die Option, die View zu verändern, ohne den Code anzufassen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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