Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Error : 1548: non-structural indexes open
Message
From
03/02/2005 18:20:43
 
 
To
27/01/2005 03:23:50
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
General information
Forum:
Visual FoxPro
Category:
Troubleshooting
Environment versions
Visual FoxPro:
VFP 6 SP5
Database:
Visual FoxPro
Miscellaneous
Thread ID:
00980871
Message ID:
00983691
Views:
19
Hi Agnes,

You hit it on the nose. There was an INDEX ON... after a REQUERY.

Thanks so much for pointing me in the right direction.

Bruce

>Bruce,
>
>you are right at the fact that the
>
>SELECT ListView
>INDEX ON SomeField TAG SomeField
>
>will create structural indexes on views.
>
>But only if you issue it before REQUERY(ListView)
>
>This is a problem with the file that holds the view, i.e. DBF('ListView')
>Try the following:
>
>USE ListView
>?DBF('ListView')
>requery()
>?DBF('ListView')
>
>
>
>You see the dbf changing?
>
>So what does that to the INDEX .. TAG stuff?
>
>It's simple INDEX .. TAG creates an CDX File with the same name as the DBF
>
>If you REQUERY() you alter the DBF and INDEX .. TAG has no idea about the CDX file to use, so it generates non-structural indexes, even if you issue TAG.
>
>So what you need to do is add the new index to the original CDX file.
>see following snippet how to determine if the view is after REQUERY and how to add to CDX file
>
>
>SELECT SomeView
>IF !EMPTY(CDX(1));
>  AND !JUSTSTEM(CDX(1))==JUSTSTEM(DBF()) THEN
> INDEX ON ;
>  cExpression ;
>  TAG cTag OF CDX(1) ADDITIVE
>ELSE &&!EMPTY(CDX(1)) ...
> INDEX ON ;
>  cExpression ;
>  TAG cTag
>ENDIF &&!EMPTY(CDX(1)) ...
>
>
>I use that for dynamic sorting grids. In all other cases I recommend to create all indexes right after USE.
>
>HTH
>
>Agnes.
>>The actual error message is:
>>
>>Error : 1548: Table listview has one or more non-structural indexes open....
>>
>>This error is not reproducible by the user or in our test environment, but the error occurs randomly a couple of times a week at some (again, random) of our 600+ installations. Appears to happen on most OSs.
>>
>>ListView is a non-updateable local view used to populate a grid which is used as a pick-list. A couple of indexes are created on this view using the
>>
>>SELECT ListView
>>INDEX ON SomeField TAG SomeField
>>
>>syntax. It is my understanding that this should create structural indexes even on local views. Many of our sites process hundreds of transactions/day w/o problems, then error. We see the error at both single user sites where the app is installed locally and at larger sites where the app is installed on a network.
>>
>>I've run text searches over the code base looking for code that might create non-structural indexes and cannot find anything. This feels like a bogus error message, and I am at a loss as to how to proceed except to drop the indexes before any transaction, then recreate the indexes after the END TRANSACTION. But this feels like a lot of overhead for what should be a non-issue.
>>
>>Anyone have any thoughts on this?
>>
>>Thanks
>>
>>Bruce
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform