Foxpro 7.0 "scan" sub directories

Hi,

I have a directory containing a whole slew of folders. Each of these folders contains several FoxPro databases. What I am trying to do is access a DBF of a certain name in each of the folders. Then sum up a certain field in the dbf, and store it in another table. What I need help with is parsing though each of the directories. Pseudocode might look like this:

For each folder in directory X
      set strD = Directory_name
      use sales.dbf
      Sum amount to X1
      copy strD to table Y
      copy X1 to table Y
Next Folder

Thanks for your help experts.
FFNOKCAsked:
Who is Participating?
 
pcelbaCommented:
This is really a short program:

LOCAL lcBaseFolder, lnDirs, laDirs, lnI, lcDir, lnSum

lcBaseFolder = "D:\<YourFolder>\"
lnDirs = ADIR(laDirs, lcBaseFolder + "*.*", "D")

SELECT 0
CREATE TABLE Y (Folder char(100), amount decimal(10,3))
SELECT 0

FOR lnI = 1 TO lnDirs
  IF "D" $ laDirs[lnI, 5]
    lcDir = lcBaseFolder + laDirs[lnI, 1]
    IF FILE(lcDir + "\sales")
      USE (lcDir + "\sales")
      SUM amount TO lnSum
      USE
    ELSE
      lnSum = -1
    ENDIF
    INSERT INTO Y VALUES (lcDir, lnSum)
  ENDIF
NEXT

SELECT Y
GO TOP
BROWSE NOWAIT

Open in new window

0
 
FFNOKCAuthor Commented:
pcelba,

When I run this code I get an error saying laDirs is not an array. Does it need to be specifically dimensioned first? I thought VFP automatically created and sized arrays as needed.
0
 
pcelbaCommented:
I supposed it as well...

So, please change the first line to:

LOCAL lcBaseFolder, lnDirs, laDirs[1], lnI, lcDir, lnSum
0
 
pcelbaCommented:
The laDirs can be an array of any dimension, it can even be missing (then private array is created) but it cannot be a single variable prior to the ADIR() function call.

The interesting thing is I don't remember when this error occured in my code in the past...

OTOH, this error message prevents a certain kind of typo bugs in code.
0
 
FFNOKCAuthor Commented:
Thanks again. That worked, but it brought me to another question which I will post shortly. :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.