Einschränken des Gültigkeitsbereichs einer Ansicht

Beim Zugriff auf eine Remotedatenquelle greifen Sie möglicherweise auf große Datenmengen zu. Sie können durch Einschränken des Gültigkeitsbereichs der Ansicht festlegen, dass die Ansicht nur die Datensätze einliest, die Sie zu einem bestimmten Zeitpunkt benötigen. Hierdurch wird das Netzwerk weniger belastet und die Leistung der Ansicht erhöht. Angenommen, Sie benötigen die Informationen über Kunden in einem bestimmten Land sowie über die Aufträge dieser Kunden. In diesem Fall ist es schneller, wenn Sie nur die Datensätze für das gewünschte Land und nicht alle Kunden in die Ansicht laden.

Eine Methode, um den Gültigkeitsbereich einer Ansicht einzuschränken, besteht darin, eine WHERE-Klausel in die SQL-Anweisung der Ansicht einzufügen. Wenn Sie z. B. nur die Kunden in Schweden anzeigen möchten, können Sie die folgende SQL WHERE-Klausel zur Ansicht hinzufügen:

SELECT * FROM customer ;
   WHERE customer.country = 'Sweden'

Dieser Code bietet eine effektive Einschränkung des Gültigkeitsbereichs der Ansicht, da hierdurch lediglich die Datensätze der Kunden in Schweden geladen werden. Allerdings würde dies voraussetzen, dass Sie für jedes Land eine eigene Ansicht erstellen, da der Wert für ein Land customer.country in der SELECT-Anweisung der Ansicht fest eingegeben ist.

Erstellen einer parametrisierten Ansicht

Mit Hilfe einer parametergesteuerten Sicht können Sie den Bereich einer Sicht beschränken, ohne für jede Teilmenge von Datensätzen eine separate Sicht erstellen zu müssen. Eine parametrierbare Ansicht erstellt eine WHERE-Klausel in der SQL SELECT-Anweisung der Ansicht, die die zu ladenden Datensätze auf den Bereich einschränkt, der die Bedingungen in der WHERE-Klausel erfüllt. Diese Bedingungen werden anhand des Wertes, der für den Parameter angegeben wird, erstellt. Dieser Wert kann zur Laufzeit eingegeben oder der Ansicht programmgesteuert übergeben werden.

Im obigen Beispiel können Sie z. B. eine Ansicht erstellen, mit der Sie Datensätze für jedes Land laden können, indem Sie einfach den Namen des Landes angeben, wenn Sie die Ansicht verwenden.

So erstellen Sie eine parametrierbare Ansicht

  • Klicken Sie im Ansichts-Designer im Menü Abfrage auf Ansichtsparameter.

    - Oder -

  • Verwenden Sie den CREATE SQL VIEW-Befehl mit einem Fragezeichen "?" und einem Parameter.

Der von Ihnen angegebene Parameter wird als Visual FoxPro-Ausdruck ausgewertet, dessen Wert als Bestandteil der SQL-Anweisung der Ansicht gesendet wird. Schlägt die Auswertung fehl, fordert Visual FoxPro zur Eingabe des Parameterwerts auf. Befindet sich z. B. die Tabelle customer der Datenbank testdata auf einem Remoteserver, erstellt der folgende Code eine parametergesteuerte Ansicht, bei der nur die Kunden aus dem Land berücksichtigt werden, das dem für den Parameter ?cCountry angegebenen Wert entspricht.

OPEN DATABASE testdata
CREATE SQL VIEW customer_remote_view ;
   CONNECTION remote_01 ;
   AS SELECT * FROM customer ;
   WHERE customer.country = ?cCountry

Sie können den Wert für ?cCountry auch programmgesteuert übergeben, wenn Sie die Ansicht verwenden. Sie können hierfür z. B. den folgenden Code verwenden:

cCountry = 'Sweden'
USE Testdata!customer_remote_view IN 0
BROWSE

Visual FoxPro zeigt die Kundendatensätze der schwedischen Firmen im Datenblattfenster für Customer_remote_view an.

Tipp   Handelt es sich bei dem Parameter um einen Ausdruck, so schließen Sie den Parameterausdruck in Klammern ein. So kann der gesamte Ausdruck als Teil des Parameters ausgewertet werden.

Auffordern der Benutzer zur Eingabe eines Parameters

Handelt es sich bei dem Parameter nicht um eine Variable oder einen Ausdruck, möchten Sie möglicherweise den Benutzer dazu auffordern, den Parameterwert einzugeben. Verwenden Sie dazu den Ansichtsparameter als Zeichenfolge in Anführungszeichen. Wenn Sie einen Ansichtsparameter unter Verwendung einer Zeichenfolge in Anführungszeichen nach dem Fragezeichen "?" erstellen, interpretiert Visual FoxPro die Zeichenfolge nach dem Fragezeichen "?" nicht als Ausdruck. Stattdessen werden Sie zur Eingabe des Parameters zur Laufzeit aufgefordert. Der folgende Code erstellt z. B. eine parametrierbare Ansicht, die den Benutzer auffordert, einen Wert für den Parameter ?'my customer id' anzugeben:

OPEN DATABASE testdata
CREATE SQL VIEW customer_remote_view ;
   CONNECTION remote_01 ;
   AS SELECT * FROM customer ;
   WHERE customer.cust_id = ?'my customer id'
USE customer_remote_view

Wenn Sie die Ansicht dieses Beispiels verwenden, wird das Dialogfeld Ansichtsparameter angezeigt.

Nach Eingabe einer gültigen Kunden-ID ruft Visual FoxPro den entsprechenden Datensatz auf. Wenn Sie im Beispiel oben den Wert ALFKI eingeben und anschließend die Ansicht Customer_remote_view durchsuchen, wird im Datenblattfenster der entsprechende Datensatz angezeigt.

Durch die Angabe einer Zeichenfolge in Anführungszeichen stellen Sie sicher, dass Visual FoxPro den Benutzer immer zur Eingabe eines Parameterwertes auffordert.

Siehe auch

Anzeigen von Daten mit Hilfe von Ansichten | Öffnen mehrerer Instanzen einer Ansicht | Erstellen von Abfragen | Ansichts-DesignerCREATE SQL VIEW | Anzeigen der Struktur einer Ansicht