Freigeben über


SCAN ... ENDSCAN-Befehl

Bewegt den Datensatzzeiger durch die ausgewählte Tabelle und führt für jeden Datensatz, der mit den festgelegten Bedingungen übereinstimmt, eine Reihe von Befehlen aus.

SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
   [Commands] [LOOP] [EXIT] 
ENDSCAN

Parameter

  • NOOPTIMIZE
    Verhindert die Rushmore-Optimierung des SCAN-Befehls.

    Weitere Informationen finden Sie unter SET OPTIMIZE-Befehl und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

  • Scope
    Gibt einen Datensatzbereich an, der gescannt werden soll. Nur die Datensätze innerhalb dieses Bereichs werden berücksichtigt. Die Bereichsklauseln sind: ALL, NEXT nRecords, RECORD nRecordNumber und REST. Weitere Informationen zu Bereichsklauseln finden Sie unter Bereichsklauseln.

    Der Standardgeltungsbereich für SCAN ist ALL, also alle Datensätze.

  • FOR lExpression1
    Führt Befehle nur für solche Datensätze aus, für die lExpression1 den Wert Wahr (.T.) ergibt. Mit der FOR-Klausel können Sie die Datensätze herausfiltern, die nicht gescannt werden sollen.

    Die Rushmore-Technologie optimiert eine Abfrage, die mit SCAN … FOR erstellt wurde, wenn es sich bei lExpression1 um einen optimierbaren Ausdruck handelt. Die beste Leistung erreichen Sie, indem Sie in der FOR-Klausel einen optimierbaren Ausdruck verwenden.

    Weitere Informationen finden Sie unter SET OPTIMIZE-Befehl und Verwenden von Rushmore zum Beschleunigen des Datenzugriffs.

  • WHILE lExpression2
    Gibt eine Bedingung an, nach der die Befehle solange ausgeführt werden, wie lExpression2 den Wert Wahr (.T.) ergibt.

  • Commands
    Gibt die Visual FoxPro-Befehle an, die ausgeführt werden sollen.

  • LOOP
    Gibt die Steuerung direkt an SCAN zurück. LOOP kann an einer beliebigen Stelle zwischen SCAN und ENDSCAN eingefügt werden.

  • EXIT
    Überträgt die Programmsteuerung aus der SCAN … ENDSCAN-Schleife auf den ersten auf ENDSCAN folgenden Befehl. EXIT kann an einer beliebigen Stelle zwischen SCAN und ENDSCAN eingefügt werden.

  • ENDSCAN
    Zeigt das Ende der SCAN-Prozedur an.

Hinweise

SCAN setzt den Datensatzzeiger automatisch auf den nächsten Datensatz, der mit den festgelegten Bedingungen übereinstimmt, und führt einen Befehlsblock aus.

Sie können hinter ENDSCAN in derselben Zeile Kommentare eingeben. Diese Kommentare werden beim Kompilieren und Ausführen des Programms ignoriert.

SCAN ... ENDSCAN stellt sicher, dass Visual FoxPro beim Erreichen von ENDSCAN die Tabelle erneut auswählt, die zu Beginn der SCAN ... ENDSCAN-Schleife die aktuelle Tabelle war.

Beispiel

Im folgenden Beispiel werden mit einer SCAN … ENDSCAN-Schleife alle Firmen in Schweden angezeigt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR

SCAN FOR UPPER(country) = 'SWEDEN'
   ? contact, company, city
ENDSCAN

Siehe auch

DO CASE ... ENDCASE-Befehl | DO WHILE ... ENDDO-Befehl | FOR EACH ... ENDFOR | FOR ... ENDFOR-Befehl