Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Error : 1548: non-structural indexes open
Message
From
27/01/2005 03:23:50
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
 
 
To
26/01/2005 13:38:33
General information
Forum:
Visual FoxPro
Category:
Troubleshooting
Environment versions
Visual FoxPro:
VFP 6 SP5
Database:
Visual FoxPro
Miscellaneous
Thread ID:
00980871
Message ID:
00981122
Views:
44
This message has been marked as the solution to the initial question of the thread.
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
Words are given to man to enable him to conceal his true feelings.
Charles Maurice de Talleyrand-Périgord

Weeks of programming can save you hours of planning.

Off

There is no place like [::1]
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform