Share via


BROWSE-Befehl

Öffnet das Datenblattfenster und zeigt Datensätze der aktuellen oder ausgewählten Tabelle an.

BROWSE [FIELDS FieldList] [FONT cFontName [, nFontSize]] 
   [STYLE cFontStyle] [FOR lExpression1 [REST]] [FORMAT] 
   [FREEZE FieldName] [KEY eExpression1 [, eExpression2]] [LAST | NOINIT]
   [LOCK nNumberOfFields] [LPARTITION] [NAME ObjectName] [NOAPPEND]
   [NOCAPTIONS] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID] 
   [NOLINK] [NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT] 
   [PARTITION nColumnNumber [LEDIT] [REDIT]]
   [PREFERENCE PreferenceName] [SAVE] [TIMEOUT nSeconds] 
   [TITLE cTitleText] [VALID [:F] lExpression2 [ERROR cMessageText]]
   [WHEN lExpression3] [WIDTH nFieldWidth] [WINDOW WindowName1]
   [IN [WINDOW] WindowName2 | IN SCREEN] [COLOR SCHEME nSchemeNumber]

Parameter

  • FIELDS FieldList
    Gibt die Namen der Felder an, die im jeweiligen Datenblattfenster dargestellt werden sollen. Die Felder werden in der Reihenfolge angezeigt, in der sie in FieldList angegeben sind. Sie können in der Feldliste auch Felder angeben, die zu verknüpften Tabellen gehören. Ist dies für ein Feld der Fall, müssen Sie vor den Namen des Feldes den Alias der verknüpften Tabelle sowie einen Punkt setzen.

    Wenn Sie FIELDS nicht angeben, werden alle Felder der Tabelle in der Reihenfolge angezeigt, in der sie in der Tabellenstruktur angeordnet sind.

  • FONT cFontName [, nFontSize]
    Legt Schriftart und Schriftgrad des Datenblattfensters fest. Der Zeichenausdruck cFontName gibt den Namen der Schriftart und der numerische Ausdruck nFontSize den Schriftgrad an. Zum Beispiel gibt die folgende Klausel an, dass die Inhalte der im zugehörigen Datenblattfenster angezeigten Felder in der Schrift Courier 16 pt angezeigt werden:

    FONT 'Courier',16 
    

    Ist in einer FONT-Klausel nFontSize nicht angegeben, wird im Datenblattfenster eine 10-pt-Schrift verwendet. Fehlt die FONT-Klausel, wird die Schriftart MS Sans Serif 8 verwendet.

    Ist die angegebene Schriftart nicht verfügbar, wird eine Schrift mit ähnlichen Schriftmerkmalen verwendet.

  • STYLE cFontStyle
    Gibt den Schriftstil des Datenblattfensters an. Wenn Sie die STYLE-Klausel nicht angeben, wird der normale Schriftstil verwendet.

    Ist der angegebene Schriftstil nicht verfügbar, wird ein Schriftstil mit ähnlichen Merkmalen oder der normale Schriftstil verwendet.

    Zeichen Schriftstil
    B Fett
    I Kursiv
    N Normal
    O Umriss
    Q Undurchsichtig
    S Schattiert
    Durchgestrichen
    T Transparent
    U Unterstrichen

    Sie können Schriftstile durch Angabe mehrerer Zeichen kombinieren. Im folgenden Beispiel wird ein Datenblattfenster geöffnet und ein unterstrichener Schriftstil verwendet:

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    IF _WINDOWS
       BROWSE FIELDS contact FONT 'System', 15  STYLE 'NU'
    ENDIF
    IF _MAC
       BROWSE FIELDS contact FONT 'Geneva', 14  STYLE 'NU'
    ENDIF
    
  • FOR lExpression1
    Legt eine Bedingung fest, die dafür sorgt, dass im jeweiligen Datenblattfenster nur die Datensätze angezeigt werden, für die die Bedingung lExpression1 gleich Wahr (.T.) ist.

    Ist lExpression1 ein optimierbarer Ausdruck, wird die mit einem BROWSE FOR-Befehl angegebene Abfrage von Rushmore optimiert. Die beste Leistung erreichen Sie, indem in der FOR-Klausel ein optimierbaren Ausdruck verwendet wird. Weitere Informationen zu mit Hilfe von Rushmore optimierbaren Ausdrücken finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

    Bei Verwendung von FOR, wird der Datensatzzeiger auf den ersten der Bedingung entsprechenden Datensatz positioniert. Geben Sie REST an, wenn der Datensatzzeiger seine aktuelle Position behalten soll.

  • REST
    Verhindert, dass der Datensatzzeiger aus seiner aktuellen Position an den Anfang der Tabelle bewegt wird, wenn ein Datenblattfenster mit einer FOR-Klausel geöffnet wird. Andernfalls bewegt BROWSE den Datensatzzeiger standardmäßig an den Anfang der jeweiligen Tabelle.

  • FORMAT
    Gibt an, dass eine Formatdatei verwendet werden soll, um für das zugehörige Datenblattfenster das Anzeige- sowie das Dateneingabeformat festzulegen. Eine Formatdatei muss mit SET FORMAT geöffnet werden. Die folgenden Informationen werden der jeweiligen Formatdatei entnommen und anschließend für das entsprechende Datenblattfenster verwendet:

    • Die Namen der Felder, die im Datenblattfenster dargestellt werden sollen
    • Alle VALID-Klauseln
    • Alle WHEN-Klauseln
    • Alle RANGE-Klauseln
    • Feldgrößen (wie sie in PICTURE-Klauseln angegeben sind)
    • Alle SAY-Ausdrücke (eingebunden als berechnete BROWSE-Felder)

    Im folgenden Beispiel dient eine Formatdatei dazu, Daten, die in ein Datenblattfenster eingegeben werden, auf Gültigkeit zu prüfen. Die mittels @ ... GET angegebenen Positionen werden ignoriert.

    Die erste Zeile der Formatdatei erstellt ein BROWSE-Feld (cust_id), das 5 Zeichen breit ist und als Eingabe nur Buchstaben und Ziffern akzeptiert. Die zweite Zeile erstellt ein BROWSE-Feld (company), das bis zu 20 alphabetische Zeichen enthalten kann, aber nicht leer sein darf.

    Die dritte Zeile erstellt ein BROWSE-Feld (contact), in das Sie nur dann Daten eingeben können, wenn das Feld leer ist.

    Die Formatdatei Custentr.fmt, mit der die in die Tabelle customer eingegebenen Daten auf Gültigkeit geprüft werden, hat folgenden Inhalt:

    @ 3,0 GET cust_id PICTURE 'NNNNN'
    @ 3,0 GET company VALID company != SPACE(40) ;
       PICTURE 'AAAAAAAAAAAAAAAAAAAA'
    @ 3,0 GET contact WHEN contact = SPACE(40)
    
    * This is the program that uses the format file
    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    SET FORMAT TO custentr.fmt
    BROWSE FORMAT
    
  • FREEZE FieldName
    Ermöglicht, dass im Datenblattfenster nur an einem Feld Änderungen vorgenommen werden können. Dieses Feld wird durch FieldName angegeben. Die übrigen Felder werden angezeigt, können aber nicht bearbeitet werden.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    BROWSE FIELDS phone :H = 'Phone Number:' , ;
       company :H = 'Company:' ;
       FREEZE phone
    
  • KEY eExpression1 [, eExpression2]
    Beschränkt den Bereich der Datensätze, die im Datenblattfenster angezeigt werden. Mit KEY können Sie für die anzuzeigenden Datensätze einen Indexschlüsselwert (eExpression1) oder einen Bereich von Schlüsselwerten (eExpression1, eExpression2) angeben. Die Tabelle muss indiziert sein und die in der KEY-Klausel angegebenen Indexschlüsselwerte müssen denselben Datentyp haben wie der Ausdruck, der den Hauptschlüssel (Hauptindex) definiert.

    Zum Beispiel gehört zur Tabelle customer ein Zeichenfeld, das Postleitzahlen enthält. Für den Fall, dass die Tabelle nach diesem Feld indiziert ist, können Sie in der KEY-Klausel einen Bereich von Postleitzahlen angeben.

    Im folgenden Beispiel werden im Datenblattfenster nur die Datensätze angezeigt, in denen Postleitzahlen, die im Bereich von 10.000 bis 30.000 liegen, abgelegt sind:

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    SET ORDER TO postalcode
    BROWSE KEY '10000', '30000'
    
  • LAST | NOINIT
    Speichert alle Konfigurationsänderungen, die an der Darstellung des jeweiligen Datenblattfensters vorgenommen wurden. Diese Änderungen werden in der Ressourcendatei (standardmäßig Foxuser.dbf) gespeichert und können sich auf die Feldliste, die Breiten der Felder sowie die Position und Größe des Datenblattfensters beziehen.

    Wenn Sie einen BROWSE-Befehl mit einer LAST- oder NOINIT-Klausel eingeben, wird das zugehörige Datenblattfenster in der gleichen Konfiguration geöffnet, die zuletzt in der Ressourcendatei (Foxuser.dbf) gespeichert wurde (sofern SET RESOURCE auf ON eingestellt war bzw. ist). Dadurch wird die mit dem letzten BROWSE-Befehl erstellte Konfiguration des Datenblattfensters wiederhergestellt. Umfasst der zuletzt in das Befehlsfenster eingegebene BROWSE-Befehl viele Klauseln, sollten Sie, damit der Befehl nicht erneut vollständig eingegeben werden muss. BROWSE mit einer der Klauseln LAST oder NOINIT eingeben. Weitere Informationen zu der Ressourcendatei (Foxuser.dbf) finden Sie in der Hilfe unter SET RESOURCE.

    Wurde das letzte Datenblattfenster mit einem BROWSE-Befehl geöffnet, der eine PREFERENCE-Klausel enthielt, stellt BROWSE LAST die zugehörigen Einstellungen nicht wieder her.

    Wird ein Datenblattfenster durch Drücken von STRG+Q geschlossen, werden die Konfigurationsänderungen, die Sie in der aktuellen Sitzung vorgenommen haben, nicht gespeichert.

    Die Klauseln LAST und NOINIT sind identisch; NOINIT bietet Kompatibilität mit dBASE.

  • LOCK nNumberOfFields
    Gibt an, wie viele Felder Sie im linken Bereich des jeweiligen Datenblattfensters sehen können, ohne die Position des Cursors durch Drücken der Tabulatortaste oder durch einen Bildlauf zu ändern. Der linke Bereich wird in der Breite automatisch so angepasst, dass in ihm so viele Felder angezeigt werden können, wie Sie mit nNumberOfFields angegeben haben.

  • LPARTITION
    Gibt an, dass der Cursor im ersten Feld des linken Bereichs des Datenblattfensters angeordnet wird. Standardmäßig wird der Cursor beim Öffnen des Datenblattfensters im ersten Feld des rechten Bereichs angeordnet.

  • NAME ObjectName
    Erstellt für das Datenblattfenster einen Objektverweis, der es Ihnen ermöglicht, dieses Fenster mit den objektorientierten Eigenschaften zu manipulieren, die für das Datenraster-Steuerelement (Grid) zur Verfügung stehen. Weitere Informationen zum objektorientierten Programmieren in Visual FoxPro finden Sie unter Objektorientierte Programmierung. Unter Datenraster-Steuerelement (Grid) finden Sie weitere Informationen zu den Eigenschaften von Datenraster-Steuerelementen (Grid), die Sie für die Datenblattfenster angeben können, die unter Verwendung der NAME-Klausel erstellt wurden.

  • NOAPPEND
    Verhindert, dass der Benutzer mittels STRG+Y oder durch Auswahl des Befehls Datensatz anhängen aus dem Menü Tabelle Datensätze an die Tabelle anhängt.

    Anmerkung   Auch wenn NOAPPEND angegeben ist, können Sie aus einer mit VALID, WHEN oder ON KEY LABEL aufgerufenen Routine heraus einen Datensatz anfügen, während das Datenblattfenster aktiv ist.

  • NOCAPTIONS
    Gibt an, dass immer der Feldname einer Tabelle oder einer Sicht für die Spaltenkopfzeilen verwendet werden soll, auch wenn die Datenbank einen beschreibenden Namen für das Tabellenfeld enthält. Diese Klausel bezieht sich nur auf Tabellen oder Sichten in einer Datenbank.

  • NODELETE
    Verhindert, dass Datensätze im jeweiligen Datenblattfenster zum Löschen markiert werden können. Normalerweise kann ein Datensatz zum Löschen markiert werden, indem STRG+T gedrückt, aus dem Menü Tabelle der Befehl Löschmarkierung umschalten gewählt oder auf die äußerst linke Spalte des Datensatzes geklickt wird.

  • NOEDIT | NOMODIFY
    Verhindert das Verändern der Tabelle durch den Benutzer. NOEDIT und NOMODIFY sind identisch. Wird eine dieser Klauseln angegeben, kann der Benutzer zwar in der Tabelle blättern oder nach Daten suchen, kann aber die Daten nicht bearbeiten. Es können jedoch Datensätze angefügt und gelöscht werden.

  • NOLGRID
    Entfernt die feldbezogenen Rasterlinien im linken Bereich des Datenblattfensters.

  • NORGRID
    Entfernt die feldbezogenen Rasterlinien im rechten Bereich des Datenblattfensters.

  • NOLINK
    Hebt die Verbindung zwischen den Bereichen des Datenblattfensters auf. Standardmäßig sind der linke und der rechte Bereich eines Datenblattfensters miteinander verbunden, d. h., wenn Sie einen Bildlauf in einem Bereich durchführen, erfolgt dies auch im anderen Bereich.

  • NOMENU
    Entfernt in Visual FoxPro den Menünamen Tabelle aus der Systemmenüleiste und verhindert so den Zugriff auf das Menü Datenblatt.

  • NOOPTIMIZE
    Deaktiviert die Rushmore-Optimierung von BROWSE. Weitere Informationen finden Sie unter SET OPTIMIZE und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

  • NOREFRESH
    Verhindert, dass das jeweilige Datenblattfenster aktualisiert wird. Mit SET REFRESH kann festgelegt werden, in welchen Zeitabständen Datenblattfenster aktualisiert werden sollen. NOREFRESH empfiehlt sich für schreibgeschützte Dateien und verbessert das Leistungsverhalten.

  • NORMAL
    Öffnet das Datenblattfenster mit seinen Standardeinstellungen, wie Farben, Größe, Position, Titel und Steueroptionen (GROW, FLOAT, ZOOM usw.). Ist NORMAL nicht angegeben und das aktuelle Ausgabefenster ein benutzerdefiniertes Fenster mit eigenen Einstellungen, übernimmt das Datenblattfenster diese benutzerdefinierten Einstellungen.

  • NOWAIT
    Sorgt dafür, dass die Ausführung eines Programms fortgesetzt wird, und zwar unmittelbar nach dem Öffnen des Datenblattfensters. Das Programm wartet nicht, bis das Datenblattfenster geschlossen wird, sondern fährt mit der Programmzeile fort, die direkt auf die Programmzeile, in der BROWSE NOWAIT steht, folgt. Wird ein BROWSE-Befehl ohne die NOWAIT-Klausel aus einem Programm heraus aufgerufen, wird ein entsprechendes Datenblattfenster geöffnet und die Programmausführung unterbrochen, bis dieses Fenster wieder geschlossen wurde.

    NOWAIT steht nur innerhalb eines Programms zur Verfügung. Wird im Befehlsfenster ein BROWSE-Befehl mit einer NOWAIT-Klausel eingegeben, hat NOWAIT keine Auswirkungen.

  • PARTITION nColumnNumber
    Teilt das jeweilige Datenblattfenster in einen linken und einen rechten Bereich, wobei nColumnNumber die Nummer der Spalte angibt, in der der Fensterteiler angeordnet wird. Ist nColumnNumber z. B. gleich 20, wird der Fensterteiler in der Spalte 20 des Datenblattfensters angeordnet.

  • LEDIT
    Gibt an, dass der linke Bereich des Datenblattfensters im Editiermodus dargestellt werden soll.

  • REDIT
    Gibt an, dass der rechte Bereich des Datenblattfensters im Editiermodus dargestellt werden soll. Im nächsten Beispiel wird ein Datenblattfenster geöffnet, in dem der Fensterteiler in der Spalte 20 angeordnet und der rechte Bereich im Editiermodus geöffnet ist.

    Sollen der linke und der rechte Bereich im Editiermodus geöffnet sein, müssen Sie beide Schlüsselwörter angeben.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    BROWSE PARTITION 20 REDIT
    
  • PREFERENCE PreferenceName
    Speichert die Attribute und Optionen des Datenblattfensters, so dass diese später erneut verwendet werden können. Im Gegensatz zur LAST-Klausel, die das Datenblattfenster so wiederherstellt, wie es in der vorhergehenden Sitzung aussah, speichert PREFERENCE die Attribute eines Datenblattfensters auf unbestimmte Zeit in der Ressourcendatei (standardmäßig Foxuser.dbf). Diese Einstellungen können jederzeit abgerufen werden.

    Beim ersten Aufruf von BROWSE mit dem Einstellungsnamen PreferenceName wird in der Ressourcendatei (Foxuser.dbf) ein Eintrag (Datensatz) erstellt, der die Konfiguration des Datenblattfensters speichert. Wird später der BROWSE-Befehl mit demselben Einstellungsnamen aufgerufen, wird das Datenblattfenster entsprechend diesen Einstellungen wiederhergestellt. Beim Schließen des Datenblattfensters werden die Einstellungen aktualisiert.

    Ein Name, unter dem Einstellungen gespeichert werden, kann bis zu 10 Zeichen lang sein, muss mit einem Buchstaben oder einem Unterstrich beginnen und kann aus beliebig kombinierten Buchstaben, Ziffern und Unterstrichen bestehen.

    Haben Sie sich endgültig für bestimmte Einstellungen entschieden, können Sie alle weiteren Änderungen an diesen Einstellungen unterbinden. Schließen Sie dazu das Datenblattfenster, geben SET RESOURCE OFF ein, öffnen die Datei Foxuser als Tabelle und legen für den Datensatz mit den Einstellungen den Schreibschutz fest, indem Sie den Wert des logischen Feldes READONLY in Wahr (.T.) ändern.

    Weitere Informationen zur Ressourcendatei Foxuser finden Sie in der Hilfe unter SET RESOURCE.

    Wenn Sie ein Datenblattfenster durch Drücken von STRG+Q schließen, werden die am Datenblattfenster vorgenommenen Änderungen nicht in der Ressourcendatei gespeichert.

  • SAVE
    Bewirkt, dass das Datenblattfenster sowie alle seine Textbearbeitungsfenster für Memofelder aktiv und sichtbar (geöffnet) bleiben. Nachdem Sie mit der Tastatur oder der Maus zu anderen offenen Fenstern gewechselt sind, können Sie zum Datenblattfenster zurückkehren.

    SAVE steht nur innerhalb eines Programms zur Verfügung. Wird BROWSE SAVE im Befehlsfenster eingegeben, hat SAVE keine Auswirkungen, da im interaktiven Modus BROWSE SAVE die Standardeinstellung ist.

  • TIMEOUT nSeconds
    Gibt an, wie lange das Datenblattfenster auf eine Eingabe warten soll. Der numerische Ausdruck nSeconds gibt an, wie viele Sekunden ohne Eingabevorgang vergehen dürfen, bevor das Datenblattfenster automatisch geschlossen wird.

    TIMEOUT ist nur innerhalb eines Programms wirksam und hat keinen Einfluss, wenn BROWSE im Befehlsfenster eingegeben wird. Im folgenden Beispiel wird das Datenblattfenster geschlossen, wenn innerhalb von 10 Sekunden keine Eingabe erfolgt.

    DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;
       CLOSE ;
       GROW ;
       COLOR SCHEME 10
    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    BROWSE WINDOW wBrowse ;
       FIELDS phone :H = 'Phone Number:' , ;
       company :H = 'Company:' ;
       TIMEOUT 10
    RELEASE WINDOW wBrowse
    
  • TITLE cTitleText
    Ersetzt den standardmäßigen Tabellennamen oder Tabellenalias, der in der Titelleiste des Datenblattfensters angezeigt wird, durch den mit cTitleText angegebenen Namen. Andernfalls wird der Name oder der Alias der gerade bearbeiteten Tabelle in der Titelleiste dargestellt.

    Wenn Sie ein Datenblattfenster mit einem BROWSE WINDOW-Befehl in einem benutzerdefinierten Fenster anordnen, ersetzt der Titel des Datenblattfensters den Titel des benutzerdefinierten Fensters.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE customer  && Open customer table
    BROWSE;
       TITLE 'My Browse Window' ;
       FIELDS phone :H = 'Phone Number' , ;
       company :H = 'Company:'
    
  • VALID lExpression2
    Führt in einem Datenblattfenster eine Datengültigkeitsprüfung auf Datensatzebene durch. Die VALID-Klausel wird nur ausgeführt, wenn am jeweiligen Datensatz eine Änderung vorgenommen wurde und Sie versuchen, den Cursor auf einen anderen Datensatz zu bewegen. Sie wird nicht ausgeführt, wenn nur ein Memofeld geändert wird.

    Gibt VALID den Wert Wahr (.T.) zurück, kann der Benutzer den Cursor auf einen anderen Datensatz verschieben. Wird Falsch (.F.) zurückgegeben, verbleibt der Cursor im aktuellen Feld und Visual FoxPro zeigt eine Fehlermeldung an. Wenn VALID den Wert 0 zurückgibt, bleibt die Einfügemarke im aktuellen Feld, ohne dass eine Fehlermeldung angezeigt wird.

    Die VALID-Klausel darf nicht mit der Überprüfungsoption (:V) verwechselt werden, die eine Gültigkeitsprüfung auf Feldebene bewirkt.

  • :F
    Bewirkt, dass die VALID-Klausel immer ausgeführt wird, bevor der Benutzer die Einfügemarke zum nächsten Datensatz bewegt, selbst dann, wenn sich der Datensatz nicht geändert hat.

  • ERROR cMessageText
    Gibt eine Fehlermeldung an, die die standardmäßige Fehlermeldung des Systems außer Kraft setzt. Visual FoxPro zeigt cMessageText an, wenn VALID den Wert Falsch (.F.) zurückgibt.

  • WHEN lExpression3
    Wertet einen Bedingungsausdruck aus, wenn der Benutzer die Einfügemarke in einen anderen Datensatz bewegt. Ist lExpression3 gleich Wahr (.T.), kann der Benutzer den Datensatz, auf den er den Cursor bewegt hat, ändern. Ist lExpression3 gleich Falsch (.F.) oder gleich 0, erhält dieser Datensatz den Status "Schreibgeschützt" und kann somit nicht geändert werden.

    Die WHEN-Klausel wird nicht ausgeführt, wenn ein anderes Fenster aktiviert wird.

  • WIDTH nFieldWidth
    Beschränkt für alle Felder, die im jeweiligen Datenblattfenster dargestellt werden, die Anzahl der angezeigten Zeichen auf nFieldWidth. Der Inhalt eines Feldes kann horizontal mit der NACH-LINKS- und der NACH-RECHTS-TASTE sowie der horizontalen Bildlaufleiste bewegt werden. Die WIDTH-Klausel ändert nicht die Breiten der Tabellenfelder, sondern wirkt sich lediglich darauf aus, wie die Felder im Datenblattfenster angezeigt werden. Wurde für ein einzelnes Feld mit der FIELDS-Klausel eine Breite angegeben, so hat diese Angabe Vorrang vor der mit der WIDTH-Klausel für alle Felder angegebenen Breite.

  • WINDOW WindowName1
    Gibt ein benutzerdefiniertes Fenster an, dessen Eigenschaften das Bearbeitungsfenster übernimmt. Wurde das benutzerdefinierte Fenster z. B. mit der FLOAT-Klausel erstellt, kann das Datenblattfenster bewegt werden. Das angegebene Fenster muss nicht aktiv oder sichtbar sein, es muss lediglich definiert sein.

  • IN [WINDOW] WindowName2
    Gibt den Namen des übergeordneten Fensters an, in dem das Datenblattfenster geöffnet ist. Das Datenblattfenster übernimmt nicht die Eigenschaften des übergeordneten Fensters. Ein Datenblattfenster, das innerhalb eines übergeordneten Fensters aktiviert wird, kann nicht aus dem übergeordneten Fenster herausgeschoben werden, d. h., wenn das übergeordnete Fenster verschoben wird, erfolgt dies auch beim jeweiligen Datenblattfenster.

    Das übergeordnete Fenster muss mit DEFINE WINDOW definiert sowie aktiviert und sichtbar sein, damit auf das Datenblattfenster zugegriffen werden kann.

  • IN SCREEN
    Sorgt dafür, dass das jeweilige Datenblattfenster selbst dann im Visual FoxPro-Hauptfenster angeordnet wird, wenn ein benutzerdefiniertes Fenster aktiv ist.

  • COLOR SCHEME nSchemeNumber
    Gibt die Nummer des Farbschemas an, das für die Farben des Datenblattfensters verwendet werden soll.

    Es übernimmt das Farbschema, das mit der Farben-Option der Systemsteuerung eingestellt wurde.

Hinweise

Ein Datenblattfenster ermöglicht es Ihnen, die Datensätze einer Tabelle anzuzeigen, diese zu bearbeiten sowie Datensätze hinzuzufügen. Visual FoxPro gestattet es, mehrere Datenblattfenster gleichzeitig geöffnet zu haben.

Wenn Sie ein Datenblattfenster mit ESC schließen, werden die Änderungen, die Sie am zuletzt bearbeiteten Feld vorgenommen haben, nicht übernommen. Wechseln Sie jedoch nach dem Bearbeiten eines Feldes zu einem anderen Datensatz, werden die im Feld vorgenommenen Änderungen gespeichert.

In einer Feldliste kann eine beliebige Kombination von Feldern sowie berechneten Feldern angegeben sein. Für die Feldliste gilt die folgende Syntax:

FieldName1 
   [:R] 
   [:nColumnWidth]
   [:V = lExpression1 [:F] [:E = cMessageText]]
   [:P = cFormatCodes] 
   [:B = eLowerBound, eUpperBound [:F]]
   [:H = cHeadingText]
   [:W = lExpression2]
   [, FieldName2 [:R]...]

Berechnete Felder…   Die Feldliste kann Anweisungen für die Erstellung berechneter Felder enthalten. Diese Felder enthalten schreibgeschützte Daten, die mit Hilfe eines Ausdrucks erstellt werden. Die Form des Ausdrucks ist beliebig, solange es sich um einen gültigen Visual FoxPro-Ausdruck handelt.

Eine Anweisung, die ein berechnetes Feld erstellt, hat folgendes Format:

CalculatedFieldName = eExpression

Im folgenden Beispiel wird ein berechnetes Feld mit dem Namen location erstellt:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE FIELDS location = ALLTRIM(city) + ', ' + country

city und country sind die Namen zweier Felder der momentan ausgewählten Tabelle.

Für die Feldliste einer FIELDS-Klausel sind Optionen definiert, mit denen Felder, die in einem Datenblattfenster angezeigt werden, auf spezielle Weise verwaltet werden können:

  • :R
    Gibt an, dass das Feld schreibgeschützt sein soll. Die Daten dieses Feldes können angezeigt, aber nicht bearbeitet werden.

Im folgenden Beispiel wird ein Datenblattfenster mit den Feldern cust_id und company geöffnet. Das Feld cust_id ist dabei schreibgeschützt und kann nicht geändert werden.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE FIELDS cust_id:R, company
  • :nColumnWidth
    Gibt die Anzeigegröße eines Feldes in Spalten an. Der Wert von :nColumnWidth ändert nicht die Breiten der Tabellenfelder, sondern wirkt sich lediglich darauf aus, wie die Felder im Datenblattfenster angezeigt werden.

  • :V = lExpression1 [:F] [:E = cMessageText]
    Ermöglicht eine Datengültigkeitsprüfung auf Feldebene im Datenblattfenster. Wenn Sie den Cursor aus einem Feld bewegen und lExpression1 gleich Wahr (.T.) ist, werden die in das Feld eingegebenen Daten als korrekt angesehen und der Cursor in das nächste Feld bewegt.

    Ergibt die Auswertung von lExpression1 dagegen den Wert Falsch (.F.), werden die eingegebenen Daten als inkorrekt betrachtet, der Cursor verbleibt im Feld und eine Meldung wird angezeigt. Hat lExpression1 den Wert 0, werden die eingegebenen Daten als falsch angesehen. Der Cursor verbleibt im Feld, es wird aber keine Fehlermeldung angezeigt.

    Die Überprüfungsoption wird für Memofelder nicht ausgeführt.

    Standardmäßig wird lExpression1 nur ausgewertet, wenn das Feld verändert wurde. Mit Hilfe der Option :F können Sie die Überprüfung erzwingen.

    Mit Hilfe der weiter unten beschriebenen Option :E können Sie eigene Fehlermeldungen anzeigen.

  • :F
    Damit können Sie festlegen, ob der Ausdruck in der Überprüfungsoption ausgewertet wird, wenn die Einfügemarke aus einem Feld herausbewegt oder ein anderes Fenster aktiviert wird. Ist :F nicht angegeben, wird lExpression1 nur ausgewertet, wenn am Feld Änderungen vorgenommen wurden. Ist :F angegeben, wird lExpression1 selbst dann ausgewertet, wenn sich der Inhalt des Feldes nicht geändert hat.

  • :E = cMessageText
    Ergibt der Überprüfungsausdruck :V = lExpression1 den Wert Wahr (.T.), so verlässt der Cursor das Feld normal. Gibt der Ausdruck den Wert Falsch (.F.) zurück, verbleibt der Cursor im aktuellen Feld und Visual FoxPro zeigt eine Fehlermeldung an.

    Wurde die Option :E angegeben, wird nicht die Fehlermeldung des Systems, sondern cMessageText angezeigt. cMessageText wird jedoch nur dann angezeigt, wenn SET NOTIFY auf ON eingestellt ist. Ein akustisches Signal ertönt nur, wenn SET BELL auf ON gesetzt ist.

    Ergibt :V = lExpression1 den Wert 0, wird keine Meldung eingeblendet und der Cursor verbleibt in dem Feld, das auf Datengültigkeit geprüft wird. Dank dieser Option können Sie im Rahmen von Gültigkeitsprüfungsroutinen eigene Fehlermeldungen anzeigen.

    Im folgenden Beispiel wird die Tabelle products geöffnet und das Feld in_stock angezeigt. Das Feld in_stock ist ein numerisches Feld, das bis zu 5 Ziffern aufnehmen kann. Für dieses Beispiel wird angenommen, dass der Lagerbestand (in_stock) kleiner als 100 sein muss, um gültig zu sein.

    :V gibt das Kriterium für die Gültigkeitsprüfung an. :F bewirkt, dass die Gültigkeitsprüfung ausgeführt wird, ganz gleich, ob die Daten geändert wurden oder nicht. Durch :E wird die Visual FoxPro-Systemfehlermeldung durch eine benutzerdefinierte Fehlermeldung ersetzt. In Visual FoxPro wird die Fehlermeldung in der Statusleiste am unteren Rand des Visual FoxPro-Hauptfensters angezeigt.

    Drücken Sie ESC, um das Datenblattfenster zu schließen.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE products  && Open products table
    IF _WINDOWS OR _MAC
       SET STATUS BAR ON
    ENDIF
    USE products
    BROWSE FIELDS in_stock :V = in_stock < 100 ;
       :F ;
       :E = 'The stock amount must be less than 100'
    
  • :P = cFormatCodes
    Ist eine FIELDS-Klausel einbezogen, können Sie für jedes Feld, das in der Liste aufgeführt ist, eine PICTURE-Option (:P) angeben. Mit Hilfe der Picture-Option können Sie eine Liste von Codes angeben, welche in einem Datenblattfenster die Anzeige und Eingabe von Daten aller Felder steuert. cFormatCodes ist diese Codeliste.

    Im folgenden Beispiel wird die Picture-Option verwendet, damit in das Feld unit_price nur numerische Daten in einem bestimmten Format eingetragen werden können.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE products  && Open products table
    BROWSE FIELDS unit_price :P = '99,999.99'
    

    Weitere Informationen zu den Codes der Picture-Option finden Sie unter Format-Eigenschaft und InputMask-Eigenschaft.

  • :B = eLowerBound, eUpperBound [:F]
    Gibt die Unter- und Obergrenze an, zwischen denen die Daten liegen müssen. Die beiden den Bereich definierenden Ausdrücke eLowerBound und eUpperBound müssen in Bezug auf den Datentyp zum Felddatentyp passen. Sie dürfen keine benutzerdefinierten Funktionen sein. Liegen die jeweils eingegebenen Daten nicht im Bereich von eLowerBound bis eUpperBound, teilt eine Systemfehlermeldung den Bereich mit, in dem die Daten liegen müssen.

    Standardmäßig werden die eingegebenen Daten nur dann mit den Grenzwerten verglichen, wenn der Feldinhalt geändert wurde. Sollen die Daten immer darauf überprüft werden, ob sie innerhalb der angegebenen Grenzwerte liegen, müssen Sie die Option :F angeben.

    Im folgenden Beispiel wird festgelegt, dass im Feld in_stock ausschließlich Daten eingegeben werden können, die im Wertebereich von 1 bis 100 liegen. Zum Schließen des Datenblattfensters drücken Sie ESC.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE products  && Open products table
    BROWSE FIELDS in_stock :B = 1, 100    :F
    
  • :H = cHeadingText
    Ersetzt die Standardfeldnamen durch Ihre eigenen mittels cHeadingText spezifizierten Spaltenüberschriften. Standardmäßig werden in einem Datenblattfenster als Spaltenüberschriften die Namen der beteiligten Felder verwendet.

    Im folgenden Beispiel werden benutzerdefinierte Überschriften für die angezeigten Felder erstellt.

    CLOSE DATABASES
    OPEN DATABASE (HOME(2) + 'data\testdata')
    USE products  && Open products table
    BROWSE FIELDS prod_name :H = 'Product Name:', ;
       unit_price :H = 'Price per Unit:'
    
  • :W = lExpression2
    Bestimmt, ob der Cursor auf ein bestimmtes Feld bewegt werden kann. Hat lExpression2 den Wert Falsch (.F.), kann der Cursor nicht auf dieses Feld bewegt werden. Ist lExpression2 gleich Wahr (.T.), kann der Cursor auf das Feld bewegt werden. In lExpression2 werden auch benutzerdefinierte Funktionen unterstützt.

    Darf der Cursor auf keines der Felder bewegt werden, ist der aktuelle Datensatz als schreibgeschützt gekennzeichnet. Dies tritt nur auf, wenn für alle Felder eine WHEN-Klausel (:W) definiert ist, deren Auswertung den Wert Falsch (.F.) ergibt.

SET SKIP-Unterstützung…   Mit SET SKIP können Sie eine 1:n-Beziehung zwischen zwei Tabellen herstellen. Jedem Datensatz der Master-Tabelle (übergeordnete Tabelle) können mehrere Datensätze der Detailtabelle zugeordnet sein. Wenn Sie eine 1:n-Beziehung herstellen, können Sie mit BROWSE Datensätze aus der Master- und der Detailtabelle anzeigen.

Der Master-Datensatz wird einmal angezeigt, und zwar zusammen mit dem ersten zugeordneten (passenden) Datensatz der Detailtabelle. Alle weiteren zugeordneten Datensätze werden in den Zeilen nach dem Master-Datensatz und dem ersten zugeordneten Detaildatensatz angezeigt. Das Füllzeichen, das für wiederholte Informationen der Master-Tabelle verwendet wird, hängt von der aktuellen Schriftart des Datenblattfensters ab.

Steht der Datensatzzeiger auf einem Master-Datensatz, so können Sie durch Drücken von STRG+NACH-UNTEN-TASTE den Datensatzzeiger im Datenblattfenster auf den nächsten Master-Datensatz und durch Drücken von STRG+NACH-OBEN-TASTE auf den vorherigen bewegen. Weitere Informationen zum Erstellen von 1:n-Beziehungen finden Sie unter SET SKIP.

In der FIELDS-Klausel sind sowohl Felder der Master- als auch der Detailtabelle angegeben. Vor jedem Feldnamen steht der Alias der entsprechenden Tabelle (orders bzw. customer) sowie ein Punkt.

CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER cust_id IN 0   && Parent table
USE orders ORDER cust_id IN 0  && Child table
SELECT customer     && Back to parent work area
SET RELATION TO cust_id INTO orders     && Establish relationship
SET SKIP TO orders  && One-to-many relationship
WAIT WINDOW 'Scroll to see shipping dates for each customer' NOWAIT
BROWSE FIELDS customer.cust_id :H='Customer Number', ;
   customer.city :H='Customer City', orders.shipped_on

Nützliche Funktionen…   Verschiedene Visual FoxPro-Funktionen liefern nützliche Informationen zu Datenblattfenstern.

Funktion Beschreibung
VARREAD( ) Gibt den Namen des Feldes zurück, auf dem der Cursor im aktiven Datenblattfenster steht.
RECNO( ) Gibt die Datensatznummer des aktuellen Datensatzes im aktuellen Datenblattfenster zurück.

Siehe auch

CHANGE | EDIT | Datenraster-Steuerelement (Grid) | SET SKIP | WTITLE( ) | Hinzufügen von Datensätzen