How to Obtain a List of Open .DBF Files ProgrammaticallyLast reviewed: June 27, 1995Article ID: Q107361 |
The information in this article applies to:
SUMMARYUsing 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.
MORE INFORMATIONThe 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
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |