ThinkGeo.com    |     Documentation    |     Premium Support

ShapefileFeatureLayer.Rebuild does not appear to compact dbf file

Hi guys,



We are using MS Desktop 9.0.0.142.



The simplest case is to delete a single feature from a shapefile. The shapefile originally had six features. Following the delete we use the static function ShapefileFeatureLayer.Rebuild() so that the shapefile can be used in other applications. Then if we open the shapefile in an ESRI product we get a message that the shapefile is invalid. If we open the shapefile in one of our applications based on ESRI’s MapObjects we don’t receive an error, but if we open a table view we see six records instead of the five we expect.



I have attached the shapefile we have been testing so you can take a look.



Thanks!



Steve

Test_Shapefiles.zip (8.73 KB)

Hi Steven, 
  
 Sorry that I was unable to open the shapefile as the “*.dbf” file is missing. Could you please attach it again and append the code snippet here?  
  
 But I guess the reason about the shapefile can’t be opened in the ESRI product is that the length of any column’s name is bigger than 10. It will be create a “.dbc” file if the length of any column’s name is bigger than 10. 
  
 Thanks, 
 Peter

Hi Peter,



Thanks for helping.



My apologies for forgetting to include the *.dbf file. The complete shapefile is attached. There are no columns in this shapefile that are longer than 10 characters. The code is very simple:


ShapefileFeatureLayer.Rebuild(
<path>“ShapefilePath”
<path>)



 Steve

001_Test_Shapefiles.zip (9.57 KB)

Hi Steven, 
  
 Thanks for your data. Please try use the following to rebuild the shapefile. 
 ShapeFileFeatureLayer.Rebuild("ShapefilePath", ShapeFileSortingMode.None, 0); 
  
 Thanks, 
 Peter

Hi Peter, 
  
 Thanks, working fine now. 
  
 Steve

Hi Steve, 
  
 Very glad to hear it works. 
  
 Thanks, 
 Peter