How to Use SCAN...ENDSCAN to Move Data Between Tables

Last reviewed: June 27, 1995
Article ID: Q131120
The information in this article applies to:
  • Microsoft FoxPro for Windows, version 2.5, 2.5a, 2.5b, 2.6, 2.6a
  • Microsoft FoxPro for MS-DOS, version 2.0, 2.5, 2.5a, 2.5b, 2.6, 2.6a
  • Microsoft FoxPro for Macintosh, version 2.5, 2.5a, 2.5b, 2.5c, 2.6a

SUMMARY

SCAN...ENDSCAN is a FoxPro loop construction that performs a user-defined segment of code for each record in the table of the current work area. This article gives examples that illustrate DO WHILE and SCAN...ENDSCAN constructions, which are functionally identical.

MORE INFORMATION

Example of DO WHILE

   GO TOP
   DO WHILE NOT EOF()
     ** some lines of code
     SKIP
   ENDDO

Example of SCAN...ENDSCAN

   GO TOP
   SCAN
     ** some lines of code
   ENDSCAN

Using SCAN...ENDSCAN to Move Data Between Tables

SCAN...ENDSCAN is especially useful for copying the contents of a field in one table into an empty field in another table.

Here is an example scenario. A table named CUSTOMER contains personal data including customer number, name, address, phone number, and so on. A table named NEWCUST contains the same information but its customer number (CNO) field is empty, and it has more current phone numbers and addresses for each of the customers. The CUSTOMER table has the customer numbers in its CNO field. You want to move the CNO data from the CUSTOMER table to the more current NEWCUST table. You are certain that both tables have exactly the same customers sorted in exactly the same way. Therefore, you can just move the CNO field from CUSTOMER into NEWCUST row by row.

The following lines of code illustrate how to use SCAN...ENDSCAN to do it:

   *** Begin SCAN...ENDSCAN example ***
   SELECT newcust
   GO TOP
   SELECT customer
   GO TOP
   SCAN
      SELECT NEWCUST
      REPLACE cno WITH customer.cno
      SELECT customer
   ENDSCAN
   *** End SCAN..ENDSCAN example ***

NOTE: Take special care when doing something like this. Make sure each record in the first table matches the corresponding record in the second table.


Additional reference words: FoxWin FoxMac FoxDos 2.00 2.50 2.50a 2.50b
2.50c 2.60 2.60a match both post populate
KBCategory: kbprg kbcode
KBSubcategory: FxprgTable


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 27, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.