Hi Larry
Long time no see!
Another way to look at this is the query isn't formatted in a way that VFP can handle it without resorting to having the change VFP's complexity setting.
>Mike,
>VFP 8 provides a link at the bottom of the page to send feeback to MS about the documentation. Please use it if you have a problem with the docs.
>
>Having said that, if you go to the Search tab in the VFP Help and type in "SQL statement too long" in quotes, the first topic returned is SYS(3055) - FOR and WHERE clause complexity. Sometimes, it's simply a matter of looking at something another way.
>
>Regards.
>
>>Hi Fabio,
>>
>>Thank you for sharing
this very useful information. This is the kind of stuff that the online VFP help should lead to but doesn't.
>>
>>I tried to look up the Error "SQL Statement too long" in the online Help and all it says is:
>>
>>
The object code is too long to be compiled. For more information, see SELECT - SQL.
>>
>>If you go to the SELECT - SQL link there is no mention of SYS(3055) either. How #$%@! helpful is that!
>>
>>Thanks again for your help.
>>
>>Mike
>>
>>
>>>Hi Mike,
>>>
>>>-----
>>>My string is only 1844 characters and I get the error. Any ideas as to why?
>>>
>>>
>>>VFP SQL SELECT command have another limit, complexity on the stack of the parser.
>>>
>>>This is controlled by
>>>
>>>SYS(3055 , nComplexity)
>>>
>>>
>>>A simple example :
>>>
>>>SET TALK OFF
>>>CLEAR
>>>
>>>CREATE CURSOR C1 (Id I DEFAULT RAND()*1000)
>>>FOR K=1 TO 1000
>>> APPEND BLANK
>>>NEXT
>>>
>>>n=1020
>>>
>>>* 1 IN() item use 1 stack position
>>>* OR id IN use 2 stack positions
>>>
>>>maxItem = m.n-14 - 2*INT((m.n-157)/26)
>>>
>>>? maxItem
>>>sSelect = ''
>>>FOR k=1 TO m.maxItem
>>> sSelect = m.sSelect + " OR ID IN (" + LTRIM(STR(m.k))
>>> FOR k=m.k+1 TO MIN(m.k+22,m.maxItem -1)
>>> sSelect = m.sSelect + "," + LTRIM(STR(m.k))
>>> ENDFOR
>>> sSelect = m.sSelect + IIF(m.k>m.maxItem,"","," + LTRIM(STR(m.k)))+")"
>>>NEXT
>>>sSelect = STUFF(m.sSelect,1,3,"SELECT id from C1 WHERE")
>>>
>>>SYS(3055 , m.n*2)
>>>
>>>? m.sSelect
>>>&sSelect
>>>
>>>
>>>Then, try SYS(3055,2040) on your query.
>>>
>>>Fabio