> Here's a small program to illustrate the problem. It creates a table called
> TMP.
> Instead of using "t", try "lnNumFields". In that case, it worked! Go
> figure.
>
> * Begin
> LOCAL i, lcCreate, t
>
> lcCreate = SPACE(0)
>
> FOR i = ASC('a') TO ASC('z')
> lcCreate = lcCreate + CHR(i) + ' C(10), '
> ENDFOR
>
> lcCreate = LEFT(lcCreate, LEN(lcCreate) - 2)
>
> lcCreate = 'CREATE TABLE tmp (' + lcCreate + ')'
>
> &lcCreate
>
> t = AFIELDS(laField)
>
> * The variable should be a Numeric type, since that's what AFIELDS() should
> return.
> * But for me, it is a Character type.
>
> WAIT WINDOW "TYPE(lcNumFields) = " + TYPE('t')
> ?t
Your table has a field named t, and if you reference a variable with no
alias, you get the field from a currently selected table, as a default.
So, if you ask for Type("t"), what you really get is Type("tmp.t"). What
you wanted to know is Type("m.t"), which is the correct variable.
> Anyone come across this?
The number of times it came down to a thing like this is too big to be
nice. That's the main reason all Foxen got used to writing m. before a
variable - just to make sure.