We've come across an interesting issue with the use of subtypes. We are using ArcSDE 9.2 on oracle with ArcMap 9.2. We plan to upgrade to 10 later this year.
When the subtypes in our geodatabase are exposed to the ArcMap user in an edit session the order of the subtylpe list in the featurclass table drop list is "apparently" random. They are not displayed in numeric subtype order or in alphabetical order of the subtype text. I did a little digging into the SDE GDB tables and discovered that the order seems to be based on the order of the actual data in the GDB_Subtypes table. This was probably the way the data was loaded.
We have implemented a featureclass with a fairly large number of subtypes and the editors are now complaining that the order they have to deal with is confusing. And I completely agree with them. The only way I can see to resovle this is to drop the subtype completely and manually add the values in the correct order via ArcCatalog, or surgically do the same via SQL. ...Not exactly the type of operation you want to do on an enterprise database... and one that cannot be done now that the data are in production. The order apparently got messed up during implementation from Visio,
Could I drop the subtype records from the GDB_Subtypes table and add them back in via SQL? If this were to work it would be the simplest solution. But I don't particularly like having to edit SDE/GDB tables with SQL.
Are there any plans to implement the ability to order the return of subtype values? Or has it already been done in ArcGIS 10?
You could begin to implement this by adding an order column to the GDB_SUBTYPES table and then get ArcMap to use that value. Or at the very least have the option somewhere in the GDB design to order the values by either the code or the text.
While I'm on the topic I might add that modifying the order of Domain values is no piece of cake either.
Thanks,
Nick Harrison
City of Calgary
/* SQL Query to return all Subtype values in the Geodatabase */
select GDB_OC.owner,
GDB_OC.name as "FEATURE CLASS",
GDB_S.Subtypename as "SUBTYPE TEXT",
GDB_S.subtypecode as "SUBTYPE CODE"
from SDE.GDB_OBJECTCLASSES GDB_OC,
SDE.GDB_SUBTYPES GDB_S
where GDB_OC.ID = GDB_S.CLASSID