SQL.REQUEST (Funktion)

Ein Teil der Inhalte dieses Themas gilt möglicherweise nicht für alle Sprachen.

Wichtig : Die Funktion SQL.REQUEST wird in Microsoft Excel 2010 nicht unterstützt, da das Excel 2002-Add-In: ODBC (Open Database Connectivity, XLODBC.XLA) nur in Excel 2002 unterstützt wird.

In diesem Artikel werden die Formelsyntax und die Verwendung der Funktion SQL.REQUEST in Excel beschrieben.

Beschreibung

Stellt eine Verbindung mit einer externen Datenquelle her und führt eine Abfrage aus, die sich auf einem Arbeitsblatt befindet. SQL.REQUEST gibt das Ergebnis dann als Matrix zurück, ohne dass ein Makro programmiert werden muss. Ist diese Funktion nicht verfügbar, müssen Sie das ODBC-Add-In für Microsoft Excel (XLODBC.XLA) installieren. Sie können das Add-In von der Microsoft Office-Website installieren.

Syntax

SQL.REQUEST(Verbindung;[Ausgabe];[Treiber];[Abfrage];[Spaltennamen])

Die Syntax der Funktion SQL.REQUEST weist die folgenden Argumente auf:

  • Verbindung     Erforderlich. Stellt die Informationen bereit, die der jeweils verwendete Treiber benötigt, um eine Verbindung mit einer Datenquelle herzustellen. Diese Informationen müssen in dem vom Treiber erwarteten Format vorliegen und umfassen z. B. den Namen der Datenquelle, die Benutzer-ID sowie die Kennwörter. In der folgenden Tabelle ist für drei Treiber je eine beispielhafte Verbindungszeichenfolge angegeben.

Treiber

Verbindung

dBASE

DSN=NWind;PWD=test

SQL Server

DSN=MeinServer;UID=DGuetti;PWD=Bier;DATABASE=Kneipen

ORACLE

DSN=Meine Oracle-Datenquelle;DBQ=MEINSERVER; UID=GerdB;PWD=Sesam

  • Sie müssen den Namen einer Datenquelle, den Sie in der Verbindung hinter dem Schlüsselwort DSN (Data Source Name) angeben, definiert haben, bevor Sie eine Verbindung zu der Datenquelle herstellen können.

  • Sie können die Verbindung als Matrix oder als Zeichenfolge eingeben. Umfasst die Verbindung mehr als 250 Zeichen, muss sie als Matrix eingegeben werden.

  • Kann SQL.REQUEST mit der verwendeten Verbindung nicht auf die entsprechende Datenquelle zugreifen, liefert die Funktion den Fehlerwert #NV.

  • Ausgabe     Optional. Der Bezug auf die Zelle, in der die fertige Verbindungszeichenfolge abgelegt werden soll. Wenn Sie SQL.REQUEST in ein Arbeitsblatt eingeben, wird Ausgabe nicht beachtet.

    • Ausgabe müssen Sie immer dann einsetzen, wenn SQL.REQUEST die fertige Verbindung zurückgeben soll. (In diesem Fall müssen Sie die SQL.REQUEST-Formel auf einem Makroblatt eingeben).

    • Wenn Sie das Argument Ausgabe nicht angeben, gibt SQL.REQUEST keine fertige Verbindung zurück.

  • Treiber     Optional. Gibt an, ob das Dialogfeld Treiber angezeigt werden soll und welche Optionen verfügbar sein sollen. Geben Sie eine der Zahlen an, die in der folgenden Tabelle erläutert sind. Fehlt das Argument Treiber, verwendet SQL.REQUEST den Wert 2 als Standardwert.

Treiber

Beschreibung

1

Das Dialogfeld Treiber wird immer angezeigt.

2

Das Dialogfeld Treiber wird nur dann angezeigt, wenn die von der Verbindung sowie der Datenquellenangabe bereitgestellten Informationen nicht ausreichen, eine Verbindung herzustellen. Es sind alle zu dem Dialogfeld gehörenden Optionen verfügbar.

3

Das Dialogfeld Treiber wird nur dann angezeigt, wenn die von der Verbindung sowie der Datenquellenangabe bereitgestellten Informationen nicht ausreichen, eine Verbindung herzustellen. Alle zu dem Dialogfeld gehörenden Optionen, die nicht benötigt werden, sind abgeblendet und somit nicht verfügbar.

4

Das Dialogfeld wird nicht angezeigt. Kann keine Verbindung hergestellt werden, wird ein Fehler gemeldet.

  • Abfrage     Optional. Die SQL-Anweisung, die Sie für die Datenquelle ausführen möchten

    • Kann SQL.REQUEST die Abfrage für die angegebene Datenquelle nicht ausführen, liefert die Funktion den Fehlerwert #NV zurück.

    • Sie können eine Abfrage aktualisieren, indem Sie die Abfrage mit Bezügen verknüpfen. In dem folgenden Beispiel aktualisiert SQL.REQUEST die Abfrage immer dann, wenn sich die Zelle $A$3 ändert.

"SELECT Name FROM Customers WHERE Balance > "&$A$3&"".

Microsoft Excel beschränkt die Zeichenfolge auf eine Länge von 255 Zeichen. Für den Fall, dass eine Abfrage diese Länge überschreitet, können Sie die Abfrage in einen vertikalen Zellbereich eingeben und den gesamten Bereich als Abfrage verwenden. Die in den Zellen stehenden Werte werden aneinandergehängt (verkettet), um so die fertige SQL-Anweisung zu bilden.

  • Spaltennamen     Optional. Gibt an, ob in der ersten Zeile der Ergebnisse die jeweiligen Spaltennamen angegeben werden sollen. Belegen Sie dieses Argument mit WAHR, wenn die Spaltennamen als erste Zeile der Ergebnisse geliefert werden sollen. Verwenden Sie FALSCH, wenn die Spaltennamen nicht geliefert werden sollen. Fehlt das Argument Spaltennamen, liefert SQL.REQUEST keine Spaltennamen.

Rückgabewert

  • Sobald die Funktion SQL.REQUEST alle Vorgänge abgeschlossen hat, liefert sie eine Matrix, in der alle Ergebnismengen stehen.

  • Kann SQL.REQUEST mit der verwendeten Verbindung nicht auf die entsprechende Datenquelle zugreifen, liefert die Funktion den Fehlerwert #NV.

Hinweise

  • SQL.REQUEST kann als Matrix eingegeben werden. Wenn Sie dies tun, liefert die Funktion eine Matrix, die diesen Bereich ausfüllt.

  • Ist dieser Zellbereich größer als die Ergebnisgruppe, fügt SQL.REQUEST leere Zellen zu der gelieferten Matrix hinzu, um diese auf die erforderliche Größe zu bringen.

  • Wenn eine Ergebnisgruppe größer ist als der Bereich, der als Matrix eingegeben wurde, liefert SQL.REQUEST die Ergebnisgruppe nur in der Größe des markierten Bereichs.

  • Die Argumente für SQL.REQUEST sind in einer anderen Reihenfolge als die Argumente für die Funktion SQLRequest in Visual Basic für Applikationen.

Beispiel

Angenommen Sie möchten für eine dBASE-Datenbank namens AUFTRAG.DBF eine Abfrage formulieren. Wenn Sie die folgende Formel in eine Zelle eingeben, werden die Ergebnisse der Abfrage in Form einer Matrix geliefert, wobei die erste Zeile aus den Spaltennamen besteht:

SQL.REQUEST("DSN=NWind;DBQ=c:\msquery;FIL=dBASE4", c15, 2, "Select Custmr_ID, Due_Date from Orders WHERE order_Amt>100", TRUE)

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×