ID: Q107361
The information in this article applies to:
Using the program below, you can obtain a list of the open database files in a program for use in a list box, backup routine, or other procedure.
The following program dimensions an array with the maximum number of open work areas for the version of FoxPro currently running. The maximum number of work areas is 25 for FoxPro 2.0 and the Standard (16-bit) version of FoxPro 2.5 for MS-DOS. For all other versions of FoxPro later than 2.0, the maximum number of work areas is 225.
Each work area is selected and tested for an open file using the DBF() function. If the DBF() function returns a name, the filename is placed in an array that can be used in other procedures. The array will contain two columns. The first column will contain the .DBF file name and the second will contain the work area in which the .DBF was opened.
* Variables Used
* maxwarea - Maximum number of work areas, dependent on FoxPro
* version being run
* tablst - Array containing list of open tables
* wactr - Counter to determine how many work areas
* contain an open file
* i - Incremental counter used in for loop/currently
* selected work area
maxwarea = select(1) && Determine max number of workareas available
DIMENSION tablst(1,3)
CLEAR
* Begin at the lowest work area and initialize counter
SELECT 1
wactr=0
FOR i = 1 to maxwarea
SELECT (i)
* If a .DBF is open, add the name and work area number
* to the next array row
IF !EMPTY(DBF())
wactr = wactr + 1
DIMENSION tablst(wactr,3)
tablst(wactr,1) = DBF()
tablst(wactr,2) = i
tablst(wactr,3) = ALIAS()
ENDIF
ENDFOR
CLOSE ALL
IF TYPE("tablst(1,1)") = "L" && Return if no tables were open
RETURN
ENDIF
* Reopen tables in the right workareas
FOR i = 1 to ALEN(tablst,1)
SELECT (tablst(i,2))
USE (tablst(i,1)) ALIAS (tablst(i,3)) AGAIN
ENDFOR
DISPLAY MEMORY LIKE tablst
Additional reference words: FoxMac FoxDos FoxWin 2.00 2.50 2.50a 2.50b
2.50c 2.60
2.60a
work area
KBCategory: kbenv kbprg kbcode
KBSubcategory: FxenvMemory
Last Reviewed: June 27, 1995