4D v14.3QUERY BY SQL |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
QUERY BY SQL
QUERY BY SQL
QUERY BY SQL ermöglicht, eine einfache Anfrage mit SELECT auszuführen. Dazu schreiben Sie folgende Anweisung: SELECT * Tabellenname ist der im ersten Parameter übergebene Name, sqlFormel der Suchstring der WHERE Klausel. So führt z.B. die folgende Anweisung: QUERY BY SQL([Employees];"name=’smith’") dasselbe aus wie die folgende SQL Anfrage: SELECT*FROM Employees WHERE"name=’smith’" QUERY BY SQL sucht in der angegebenen Tabelle nach Datensätzen. Er verändert die aktuelle Auswahl der Tabelle für den aktuellen Prozess und macht den ersten Datensatz der neuen Auswahl zum aktuellen Datensatz. Hinweis: QUERY BY SQL lässt sich nicht im Kontext einer externen SQL Verbindung einsetzen; denn er meldet sich direkt an die integrierte SQL Engine von 4D an. QUERY BY SQL wendet sqlFormel auf jeden Datensatz in der Tabelle oder Auswahl an. sqlFormel ist ein Boolean Ausdruck, der den Wert WAHR oder FALSCH hat. Wie Sie sicherlich wissen, kann in SQL-2 Standard eine Suchbedingung das Ergebnis WAHR, FALSCH oder NULL hervorbringen. Die neue aktuelle Auswahl enthält als Suchergebnis nur die Datensätze (Zeilen), für die die Suchbedingung das Ergebnis WAHR hervorbringt. Der Parameter sqlFormel kann Referenzen auf 4D Ausdrücke verwenden. Die Syntax dafür ist dieselbe wie für ODBC Befehle oder die Funktionen Begin SQL/End SQL, z.B.: Hinweis: Dieser Befehl ist kompatibel mit den Befehlen SET QUERY LIMIT und SET QUERY DESTINATION. Achtung: Im kompilierten Modus können Sie keine Referenzen auf lokale Variablen benutzen. Weitere Informationen zur SQL Programmierung in 4D finden Sie im Abschnitt Einführung in SQL Befehle. QUERY BY SQL verwendet keine Verknüpfungen zwischen Tabellen, die im 4D Struktureditor definiert wurden. Dafür müssen Sie eine Join Klausel hinzufügen. [People] Mit QUERY BY FORMULA schreiben Sie: QUERY BY FORMULA([People];[Cities]Population>1000) Mit QUERY BY SQL müssen Sie mit oder ohne Verknüpfung folgende Anweisung verwenden: QUERY BY SQL([People];"people.city=cities.name AND cities.population>1000") Hinweis: QUERY BY SQL verwaltet Eine-zu-Viele und Viele-zu-Viele Verknüpfungen anders als QUERY BY FORMULA. Dieses Beispiel zeigt die Firmen mit Verkäufen über 100. Die SQL Anfrage lautet: SELECT * Mit QUERY BY SQL lautet sie: C_STRING(30;$queryFormula) Dieses Beispiel zeigt die Bestellungen im Bereich 3000 bis 4000. Die SQL Anfrage lautet: SELECT * Mit QUERY BY SQL lautet sie: C_STRING(40;$queryFormula) Dieses Beispiel zeigt, wie Sie das Suchergebnis über spezifische Suchkriterien erhalten. Die SQL Anfrage lautet: SELECT * Mit QUERY BY SQL lautet sie: C_STRING(40;$queryFormula) Dieses Beispiel zeigt eine Suche mit verknüpften Tabellen in 4D. In SQL müssen Sie JOIN verwenden, um die 4D Verknüpfung zu simulieren. Wir gehen von zwei Tabellen in 4D aus: [Invoices] mit folgenden Spalten (Feldern): Es gibt eine Viele-zu-Eine Verbindung von [Lines_Invoices]ID_Inv to [Invoices]ID_Inv. Mit QUERY BY FORMULA schreiben Sie: QUERY BY FORMULA([Lines_Invoices];([Lines_Invoices]Code="FX-200") & (Month of([Invoices]Date_Inv)=4)) Die SQL Anfrage lautet: SELECT ID_Line Mit QUERY BY SQL lautet sie: C_STRING(40;$queryFormula) Bei korrekt formatierter Suchbedingung gibt die Systemvariable OK den Wert 1 zurück. Sonst wird sie auf 0 (Null) gesetzt; es wird eine leer Auswahl zurückgegeben und ein Fehler generiert, der sich mit einer Fehlerverwaltungsmethode abfangen lässt, die mit dem Befehl ON ERR CALL installiert wurde. |
EIGENSCHAFTEN
Produkt: 4D
GESCHICHTE
Erstellt: 4D v11 SQL SIEHE AUCH ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v12.4) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||