10-12-2017 11:29 PM
I made a new Legend Entry trough an algoritm. It showed up in the Legend. But now when I want to save my GeoWorkspace, it says:
"Failed to save document"
After I click OK, it says:
"Unable to save the GeoWorkspace. Failure may be due to insufficient disk space."
That's not true, that is just a poorly managed error...
What could cause this problem? I made some filters, spatial differences, spatial intersections, a new MDB to store new objects, buffers in the algorithm...
10-12-2017 11:37 PM
When I want to select one of the objects in this LegendEntry, the selection color doesn't change, and when I want to get some informations about the object and I doubleclick on it, an error shows up, containing:
"Extension, ExtendedPropertySet, not found0"
then a balnk "properties of objects" titled window appears...
10-12-2017 11:51 PM
I guess you use GDatabase.OpenRecordset method to get the recordset you display. GeoMedia internally never uses this method for creating recordsets which should be displayed (it holds also for Data Window). So to display data in a map, you should always create recordsets using OriginatingPipe object. Even if you want to build other queries atop of this recordset.
Furthermore, GeoMedia also stores information in Document.QueryFolder for each open recordset. If you want to get a recordset for a feature class, you should first query the Document.QueryFolder.QuerySubfolders("Features") whether the originating pipe already exists. The Query object name is in the form "<connection_name><tab><featureclass_name>". If the Query object exists, get its Recordset object and use this one. If it does not exist, create one and add it to the "Features" collection.
Next step, which GeoMedia always does, is to put CSSTransformPipe on the OriginatingPipe, where the target CS is the one of Document. Even if the internal feature's coordinate system matches the one of gws, you should add the CSSTransformPipe to the pipeline before putting the recordset to the Legend or use it as an input to other pipes.
Finally, if you want to create a pipeline, you should create a Query object for the final pipe (or each pipe shown in the map) and put it into Document.QueryFolder.QuerySubfolders("Queries") collection.
Then, if you do everything right, the geoworkspace might be internally consistent and you might be able to save it.
10-12-2017 01:10 AM
Yes, I used GDatabase.OpenRecordset after getting struggle with the OriginatingPipe.
And yes, the problem occurs right after I use the recordset created with OpenRecordset.
Thanks for help I will see what can I do...
10-12-2017 02:18 AM
Ok, I hunted down the GDatabase.OpenRecordset methods, changed them to OriginatingPipe method, everything works fine now!
But if I want to use a connected MDB for a new output, I can't use it, if it's Connection.OriginatingPipeCount is not zero. That's ok.
But how can I track down and terminate those Pipes? In another post I said my algorithm creates 2 or more, but the property says it's just 1...
I have to remove the recordset from the Legend, close Datawindows showing data from it, and? What else?
Even if I don't show the recordset in the Legend or in a Datawindow, and I can close the Connection, but when I want to remove it form Geomedia Connections, the program says it's in use. But how, if I've already closed that???
How do I know where are the remaining connections/usages?