>Good Suggestion Dragan,
>
>I've changed my approach from:
>
>m.lcPath = AddBS("C:\December 1998")
>m.lcSQL = [SELECT * ] + [FROM ] + ForcePath( "entry.dbf", m.lcPath ) + [ INTO ARRAY aFees]
>
>*-- Execute SQL statement
>&lcSQL
>
>TO:
>
>m.lcPath = AddBS("C:\December 1998")
>*-- I've added a WHERE clause ONLY for clarity
>m.lcSQLWhere = [vendor="] + m.cVar + ["]
>
>SELECT * ;
>FROM ForcePath( "entry.dbf", m.lcPath ) ;
>WHERE &lcSQLWhere. ;
>INTO ARRAY aFees
>
>This seems to do the trick without much re-engineering.
>
>Thank you for your suggestion.
>
>P.S. It has been proven that my initial approach WILL work with both Win95 & Win98 but NOT with Win NT 4.0. I do not know about NT 3.51.
The trick was that you need the quotes around a string containing a long filename, or need a variable to contain that name. In your macro you had a string which evaluated into a line which contained a long filename without quotes around, and it was interpreted word by word, consequently giving syntax terror. You had several ways out:
m.lcSQL = [SELECT * FROM "] + ForcePath( "entry.dbf", m.lcPath ) + [" INTO ARRAY aFees]
(note the quotes around the filename), or
m.lcFileName = ForcePath( "entry.dbf", "C:\December 1998")
m.lcSQL = [SELECT * FROM (] + m.lcFileName + [) INTO ARRAY aFees]
(now it's a name expression containing a variable with full filename). You've done a mixture of these two to the same effect. Good that it works now, and you know where to look next time. HTH