Anzeigen der Struktur einer Ansicht
Sie können nur die Struktur einer Ansicht mit dem USE-Befehl und der NODATA-Klausel öffnen und anzeigen. Diese Option ist insbesondere dann nützlich, wenn Sie die Struktur einer Remoteansicht anzeigen möchten, ohne das Herunterladen der Daten abzuwarten.
So öffnen Sie eine Ansicht, ohne Daten anzuzeigen
- Greifen Sie auf die Ansicht programmgesteuert unter Verwendung des USE-Befehls und der NODATA-Klausel zu.
Der folgende Code zeigt customer_remote_view
in einem Datenblattfenster an:
OPEN DATABASE testdata
USE customer_remote_view NODATA in 0
BROWSE
Wenn Sie eine Ansicht mit der NODATA-Klausel verwenden, wird immer ein neuer Ansichtscursor geöffnet. Diese Klausel bietet den schnellsten Weg zur Anzeige der Struktur einer Ansicht, da sie den kleinstmöglichen Cursor auf die Remotedatenquelle generiert. Die NODATA-Klausel veranlasst Visual FoxPro, eine WHERE-Klausel, die immer den Wert Falsch (.F.) zurückgibt, für die Ansicht zu erstellen. Da keine Datensätze der Datenquelle die Bedingung der WHERE-Klausel erfüllen, werden keine Zeilen in den Cursor der Remotedatenquelle gelesen. Die Ansicht ist deshalb schnell, weil Sie nicht darauf warten müssen, dass die Remotedatenquelle einen möglicherweise sehr großen Cursor generiert.
Tipp Die NODATA-Klausel ist effizienter als das Verwenden der MaxRecords-Eigenschaft mit der Einstellung 0 für die Ansicht oder den Cursor. Wenn Sie die MaxRecords-Eigenschaft verwenden, müssen Sie warten, bis die Remotedatenquelle einen Cursor für die Ansicht mit allen Datenzeilen, die die Bedingungen der normalen WHERE-Klausel erfüllen, generiert hat. Die Zeilen des aufgefüllten Cursors der Remoteansicht werden dann entsprechend den Einstellungen der MaxRecords-Eigenschaft geladen.
Erstellen eines Indexes für eine Ansicht
Sie können lokale Indizes für Ansichten wie für Tabellen mit dem INDEX ON-Befehl erstellen. Anders als die für eine Tabelle erstellten Indizes sind die lokalen Indizes für Ansichten nicht persistent, sondern werden bei Schließen der Ansicht gelöscht.
Tipp Bei der Entscheidung, ob Sie einen lokalen Index für eine Ansicht erstellen, sollten Sie die Größe des Resultsets Ihrer Ansicht in Betracht ziehen. Das Indizieren eines großen Resultsets kann viel Zeit in Anspruch nehmen und die Leistung der Ansicht herabsetzen.
Weitere Informationen zum Erstellen von Indizes finden Sie in Kapitel 7, Arbeiten mit Tabellen, oder unter INDEX.
Erstellen von temporären Beziehungen zwischen Ansichten
Sie können temporäre Beziehungen zwischen Ansichtsindizes untereinander oder zwischen Ansichtsindizes und Tabellenindizes mit dem SET RELATION-Befehl erstellen.
Wenn Sie den SET RELATION-Befehl zum Verbinden einer Ansicht mit einer Tabelle verwenden, sollten Sie aus Leistungsgesichtspunkten die Ansicht als Master und die Tabelle als Detailtabelle in der Beziehung festlegen. Die Verwendung der Detailtabelle ist effizienter, weil der strukturierte Index der Tabelle permanent verwaltet wird und auf ihn schnell zugegriffen werden kann. Zudem kann er von der Datenumgebung zum Sortieren der Datensätze verwendet werden. Der Index der Ansicht muss hingegen bei jeder Aktivierung der Ansicht neu aufgebaut werden und benötigt mehr Zeit als der Index der Tabelle. Ein Index einer Ansicht ist nicht Teil der Ansichtsdefinition, d. h. wenn Sie eine Datenumgebung verwenden, kann die Ansicht nicht als Detailtabelle verwendet werden, da der Index als Teil der Definition vorhanden sein muss. Dies wird von Ansichten nicht unterstützt.
Einstellen der Ansichts- und Verbindungseigenschaften
Beim Erstellen einer Ansicht erbt die Ansicht die Einstellung der Eigenschaften wie z. B. UpdateType und UseMemoSize von dem Umgebungscursor oder dem Cursor 0 der aktuellen Arbeitssitzung. Sie können diese Standardeinstellungen der Eigenschaften ändern, indem Sie die CURSORSETPROP( )-Funktion mit 0 als Cursornummer aufrufen. Nachdem die Ansicht erstellt und in einer Datenbank gespeichert wurde, können Sie die Ansichtseigenschaften mit der DBSETPROP( )-Funktion ändern. Die Änderungen, die Sie an Ansichtseigenschaften in einer Datenbank vornehmen, werden dauerhaft in der Datenbank gespeichert.
Wenn Sie eine Ansicht einsetzen, werden die Eigenschaftseinstellungen, die für die Ansicht in der Datenbank gespeichert sind, vom aktiven Ansichtscursor geerbt. Sie können die Einstellungen der Eigenschaften der aktiven Ansicht mit der CURSORSETPROP( )-Funktion ändern, indem Sie diese mit dem Ansichtscursor aufrufen. Änderungen unter Verwendung der CURSORSETPROP( )-Funktion sind temporär. Die temporären Einstellungen für die aktive Ansicht werden beim Schließen der Ansicht und die temporären Einstellungen für den Cursor 0 werden beim Beenden der Visual FoxPro-Sitzung gelöscht.
Verbindungen erben Eigenschaften auf ähnliche Weise. Die Standardeigenschaften für die Verbindung 0 werden beim Erstellen und Speichern einer benannten Verbindung in einer Datenbank vererbt. Sie können diese Standardeinstellungen der Verbindung 0 mit der SQLSETPROP( )-Funktion ändern. Nachdem die Verbindung erstellt und in einer Datenbank gespeichert wurde, können Sie die Verbindungseigenschaften mit der DBSETPROP( )-Funktion ändern. Wenn Sie eine Verbindung einsetzen, werden die Eigenschaftseinstellungen, die für die Verbindung in der Datenbank gespeichert sind, von der aktiven Verbindung geerbt. Sie können die Einstellungen der Eigenschaften der aktiven Verbindung mit der SQLSETPROP( )-Funktion ändern, indem Sie diese mit der Kennung der Verbindung aufrufen.
Sowohl Ansichten als auch Verbindungen können eine benannte ODBC-Datenquelle verwenden. Wenn Sie eine ODBC-Datenquelle in einer Ansicht verwenden, erbt die Verbindung Standardeigenschaften der Arbeitssitzung.
Das folgende Diagramm verdeutlicht für Ansichten und Verbindungen, wie die Einstellungen von Eigenschaften vererbt werden. Die grauen Linien stellen den Weg der Eigenschaftsvererbung dar; die schwarzen stellen Visual FoxPro-Befehle dar.
Ansichts- und Verbindungseigenschaften und deren Vererbung
Ändern von Standarddatentypen beim Herunterladen von Remoteansichten
Wenn Sie eine Ansicht erstellen, wird die DataType-Eigenschaft für alle Felder in der Ansicht auf einen Standardwert gesetzt. Der Wert ist der Datentyp-Buchstabe (D, G, I, L, M, P, T, W) für Datentypen mit fester Länge, und dem Buchstaben folgen die Parameter für die Feldbreite und den Maßstab in runden Klammern (B(d), Z(n), N(n, d)) für Datentypen mit variabler Länge. Diese Eigenschaft ist für lokale Ansichten schreibgeschützt. Eine Liste der Standarddatentypen finden Sie in Kapitel 21, Implementieren einer Client/Server-Anwendung, im Abschnitt "Herunterladen oder Hochladen von Daten über eine Remoteansicht".
Sie können die Einstellung der DataType-Eigenschaft für das Feld der Remoteansicht mit der DBSETPROP( )-Funktion ändern. Dies wird in der folgenden Tabelle gezeigt.
ODBC-Datentyp des Remotefeldes | Mögliche Datentypen im Visual FoxPro-Cursor |
---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
Zeichen oder Memo1 (Standard); auch Objekt oder Bild |
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY |
Memo (Standard); auch Zeichen, Objekt oder Bild |
SQL_DECIMAL SQL_NUMERIC |
Numerisch oder Währung2 (Standard); auch Zeichen, Integer oder Double |
SQL_BIT | Logisch (Standard); auch Zeichen |
SQL_TINYINT SQL_SMALLINT SQL_INTEGER |
Integer (Standard); auch Zeichen, Numerisch, Double oder Währung |
SQL_BIGINT | Zeichen (Standard); auch Integer, Numerisch, Double oder Währung |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
Double (Standard); die Anzahl der Dezimalstellen ist der Wert von SET DECIMALS in Visual FoxPro; auch Zeichen, Integer, Numerisch oder Währung |
SQL_DATE | Datum (Standard); auch Zeichen oder DatumZeit |
SQL_TIME | DatumZeit3 (Standard); auch Zeichen |
SQL_TIMESTAMP | DatumZeit4 (Standard); auch Zeichen oder Datum |
1. Wenn die Breite des ODBC-Feldes geringer ist als der Wert der Cursor-Eigenschaft UseMemoSize, wird es zu einem Feld vom Typ Zeichen im Visual FoxPro-Cursor; andernfalls zu einem Feld vom Typ Memo.
2. Hat das Feld auf dem Server den Datentyp Währung (money), erhält es in Visual FoxPro den Datentyp Währung.
3. Standardwert für den Tag ist 1.1.1900.
4. Enthält der Wert eines SQL_TIMESTAMP-Feldes Sekundenbruchteile, werden diese Bruchteile abgetrennt, wenn der Wert in den Visual FoxPro-Datentyp DatumZeit umgewandelt wird.
Verwenden der DataType-Eigenschaft
Mit Hilfe der DataType-Eigenschaft können Sie einen vom Standarddatentyp abweichenden Datentyp auswählen. Sie möchten beispielsweise ein Server-Zeitstempelfeld in Visual FoxPro herunterladen, aber der Standarddatentyp für ein Feld DatumZeit in Visual FoxPro schneidet alle im Serverzeitstempel gespeicherten Sekundenbruchteile ab. In diesem Fall können Sie mit Hilfe der DataType-Eigenschaft das Remote-Zeitstempelfeld in ein Visual FoxPro-Zeichenfeld abbilden, um so die Sekundenbruchteile zu erhalten.
Schließen der Basistabellen einer Ansicht
Die lokalen Basistabellen, die beim Verwenden einer Ansicht automatisch geöffnet werden, werden beim Schließen der Ansicht nicht automatisch wieder geschlossen; sie müssen manuell geschlossen werden. Dieses Verhalten ist mit dem SELECT - SQL-Befehl konsistent.
Siehe auch
Öffnen mehrerer Instanzen einer Ansicht | Aktualisieren von Daten mit Hilfe einer Ansicht | Erstellen von Abfragen | USE | SET RELATION | Aktualisieren mehrerer Tabellen in einer Ansicht | Aktualisieren von Daten