ThinkGeo.com    |     Documentation    |     Premium Support

Converting .mdb to shape file

I'm trying to convert several .mdb files to shape files and I'm having no luck. It bombs on this line:



featureList = source.GetAllFeatures(



ReturningColumnsType.AllColumns);

If I set Returning columns type to NoColumns, I'm able to do the conversion, but with it set to all columns, it gives an error about reading or writing corrupted memory. (Obviously, the converted file has no data though.)


source is defined here:



PersonalGeoDatabaseFeatureSource


 source = new PersonalGeoDatabaseFeatureSource(filePath, null, null, null, "SHAPE");

(When I try to use the parameters that are shown as null above, I get other issues, even though i was pretty sure i was using them correctly. I couldn't get anything to work then. Is there some documentation on the method and the parameters somewhere? Maybe that would help.)


Any  help would be appreciated!!




Hi, Kimberly


Sorry for the inconvenience. I tried to recreate your problem according to our HowDoI sample LoadGeoDatabaseFeatureLayer which you can find it under Extending MapSuite category, and the result turned out to be a little bit different from that in your case. Below is the source code segment I used to open the .mdb file with our FDOExtension, and it worked fine.
PersonalGeoDatabaseFeatureSource source = new PersonalGeoDatabaseFeatureSource(@"..\..\GeoData\JORWD6gdb.mdb", "OBJECTID", null, "MAINS", "SHAPE");
source.Open();
Collection<Feature> features = source.GetAllFeatures(ReturningColumnsType.AllColumns);
 
After running it, all the features of the .mdb file returned with the columns associated. Could you please try to apply the code to your sample? And if the problem is still there, would you mind providing us your database file? It’ll be very helpful for us to find out where the problem lies.
As for the parameters in the constructor, below is a list of the usage for each of them:
filePath: Indicating the full path of the Database file.
idColumnName: Indicating the name of the id column for the Features.
featureSchemaName: Indicating the name of the schema that is going to be used, we need to set this one to null when initializing PersonalGeoDatabaseFeatureSource,otherwise it will cause an exception inside unmanaged FDO codes.
featureClassName: Indicating the name of the table containing the Features.
geometryColumnName: Indicating the column name of the geometry value field of the Features.
Any further questions please let me know.
Thanks.
James