Zum Hauptinhalt springen

Inline SQLs (eingebettete SQLs)

Bitte beachten

Für einfache Berechnungen sollten Sie immer die Report.Calc Funktion verwenden, da diese performanter ist als eine SQL Abfrage und dadurch der Bericht schneller verarbeitet wird.

Inline SQLs können an vielen Stellen eingesetzt z.B. zur Auflösung von Kennungslisten werden: SQL Labels zum Bilden von Summen etc etc. In unserem vorigen Beispiel wird z.B. ein Inline SQL verwendet, um den Namen des Grabens (Ditch) anzuzeigen, in der die Leitung (Pipe) liegt.

Wenn man die Maus auf den Ausdruck hält, dann sieht man in einem Tooltip den SQL an.

In diesem Fall wird im Bericht der Name und die FID in Klammern angezeigt. Der SQL dahinter sieht so aus: select concat(NAME_NUMBER, ' (', FID, ')') from TA_DITCH where FID={A.FID_DITCH} Wobei der Ausdruck {A.FID_DITCH} zur Laufzeit durch den Wert in der Spalte FID_DITCH des aktuellen Datensatze ersetzt wird.

Man kann vorhandene SQLs bearbeiten oder neue SQLs mit dem Knopf SQLs erzeugen.

Der Name ist dabei beliebig wählbar.

Wenn man SQLs verwenden will kann man in einem Band den SQL Ausdruck hinzufügen Knopf drücken. Es erscheint dann eine Liste aller vorhandenen SQL Ausdrücke und man kein ein SQL Ausdruck wählen und dieses in den Bericht einfügen.

Man kann den statische Text Knopf benutzten und den Ausdruck {SQL.Name} händisch eintragen. Wie bei allen anderen Elementen auch kann man einen SQL Ausdruck auch mit statischen Texten, Parametern, C# Script Funktionen usw. kombinieren.

Beispiele:

{Sql.Name}
Graben Name: {Sql.Name}
{Sql.Flaeche} m2

Anlegen eigener SQL

  • Klicken Sie oben auf den Knopf "SQLs"
  • Klicken Sie dann auf den Knopf "Hinzufügen"

  • Geben Sie einen Alias Namen für den Inline SQL ein. z.B. "DUCT_MATERIAL"
  • Wählen Sie die Datenbankverbindung
  • Geben Sie den SQL ein

select value from EL_DUCT_MATERIAL where id={B.ID_MATERIAL}

Der Platzhalter Wert {B.ID_MATERIAL} wird zur Laufzeit mit dem Wert des Feldwert Datensatzes ersetzt, der SQL ausgeführt und das Ergebnis zurück geliefert.

Beachten Sie das Sie immer den Band Aliasnamen des Bandes angeben müssen von derm der Wert geholt werden soll. Also in dem Fall {B.ID_MATERIAL} und nicht {ID_MATERIAL}.

Weiter mit "OK"

Sie können nun diesen SQL in den Bericht einfügen in dem Sie das Band markieren und dann links den Knopf "SQL" anklicken. Wählen Sie dann ihren SQL aus.

Im Bericht sehen Sie dann (hier Gelb markiert) ihren SQL

Wenn Sie mit der Maus auf das Feld fahren sehen Sie im Tooltip den SQL.

Drücken Sie dann Vorschau PDF umd den Bericht zu testen.

Wenn der SQL fehlerhaft ist bekommen Sie am Anfang des Berichtes Fehlermeldung.

Ab 24.1.121 können Sie auch mit Parametern arbeiten statt den Platzhalter in den SQL zu schreiben.

Inline SQL mit Parametern

Ab Version 24.1.121

Es können hinter dem Name des Inline SQLs nun Parameter übergeben werden. Mehrere Parameter werden durch Komma getrennt.

Im SQL werden die Parameter durch Nummern in geschweiften Klammern angegeben und ab 1 hochgezählt.

Beispiel:

Der SQL im Inline SQL "MaterialListe" sieht so aus:

select value from material_tbd where id={1} 

Im Report muss folgendes angegeben werden:

{Sql.MaterialListe({A.ID_MATERIAL})}

D.h. im Report wird zur Laufzeit {A.ID_MATERIAL} durch den aktuellen wert des Datensatzes ersetzt, z.B. 37

{Sql.MaterialListe(37)}

Da 37 der erste Parameter ist wird {1} im SQL durch 37 ersetzt.

select value from material_tbd where id=37 

Dann der SQL ausgeführt und der Wert für value ausgegeben.

Beispiel von oben mit Parameter:

{Sql.DUCT_MATERIAL({B.ID_MATERIAL})}