阅读:1034回复:1
[讨论]mapx的紧缩表!!!
var
LayerInfo : CMapXLayerInfo; FileSpec , LayerName : String; lyr ,lyrpack : CMapXLayer; ds : CMapXDataset; LayerPos : Integer; flds : CMapXFields; begin LayerInfo := CoLayerInfo.Create; LayerPos := 0; lyr := Map1.Layers.Item['NCUST']; ds := Map1.DataSets.Item['NCUST']; FileSpec := lyr.FileSpec; LayerName := lyr.Name; LayerInfo.type_ := miLayerInfoTypeTemp; LayerInfo.AddParameter('TableStorageType', 'MemTable'); LayerInfo.AddParameter('Name', 'lyrpack'); LayerInfo.AddParameter('Fields', ds.Fields); LayerInfo.AddParameter('Features', lyr.AllFeatures); LayerInfo.AddParameter('AutoCreateDataset', 1); LayerInfo.AddParameter('DataSetName', 'lyrpack'); Map1.Layers.Add(LayerInfo, LayerPos); Map1.DataSets.Remove(ds.Name); Map1.Layers.Remove(lyr.Name); Map1.Refresh; LayerInfo := CoLayerInfo.Create; lyr := Map1.Layers['lyrpack']; ds := Map1.DataSets.Item['lyrpack']; DeleteFile(FileSpec); LayerInfo.Type_ := miLayerInfoTypeNewTable; LayerInfo.AddParameter('filespec', filespec); LayerInfo.AddParameter('Name', LayerName); LayerInfo.AddParameter('Fields', ds.Fields); LayerInfo.AddParameter('Features', lyr.AllFeatures); LayerInfo.AddParameter('AutoCreateDataset', 1); LayerInfo.AddParameter('DataSetName', LayerName); Map1.Layers.Add(LayerInfo, LayerPos); Map1.DataSets.Remove(ds.Name); Map1.Layers.Remove(lyr.Name); Map1.Refresh; ds := NIL; lyr := NIL; LayerInfo := NIL; end; 运行后,在Map1.Layers.Add(LayerInfo, LayerPos)行提示'Table NCUST is already open,can't create a new table'!!!请问这是为什么呢??? |
|