阅读:3441回复:14
[求助]为何删掉一个多边形后图层文件损坏了
<P>在vb 下,我用mo地以下语句删掉图层中的多边形之后,shape文件便损坏了,Arcview打不开,说有错误,用visualfoxpro 打开dbf文件也打不开,说不是一个表。请问有没有人知道是什么问题。谢谢!!!</P>
<P>recordset.Edit recordset.Delete recordset.MoveNext recordset.StopEditing</P> |
|
1楼#
发布于:2005-07-04 10:40
<P>我也遇到这种情况了。</P>
<P>有4万多条记录的多边形shp文件,执行删除操作(和楼主的代码一样)后和楼主描述的情况一样,dbf文件用vf打开就会显示“Not a Table!”</P> <P>我也不知道怎么解决!</P> |
|
2楼#
发布于:2005-07-03 09:24
<P>顶</P>
|
|
3楼#
发布于:2005-06-22 18:21
没人看,顶一下再。
|
|
4楼#
发布于:2005-06-22 18:19
<P>没人看,在顶一下。</P>
|
|
5楼#
发布于:2005-06-14 16:24
<P>没人看,再顶一下</P>
|
|
6楼#
发布于:2005-06-12 20:24
<P>我个人认为上述情况是由于图层中记录地FeatureId属性或shape.valueasstring属性有重复导致的,但不知怎么解决,请有经验地朋友指点。</P>
|
|
7楼#
发布于:2005-06-12 20:19
<P>其实我的数据既没有超过十万条也没有挂接其它属性数据,就是用MapObject或ArcView提供的samples中的数据也会有以上问题,难道大家就从来没有碰到过嘛???</P>
<P>我试过,只要你用一个map1控件将MapObjects2.1\Samples\data\mexico\states.shp 文件加人,使用以上代码删掉几个多边形,你就会发现你每删一次,shp层上少一个多边形,而相应地dbf库中却会减少两条记录(用ADO连到一个DATAGRID控件中就会发现),这样导致多删几次之后,图层上还有多边形(map控件上显示地),而属性库中已没有记录,程序就会报错。如果从此图层中删掉几个多边形之后,这个图层在arcview中就打不开啦,dbf文件用vf也打不开。不信你试试。</P> <P>从来没人发现过和我类似地问题嘛???</P> <P>代码:在窗体上加map、adodc、datagrid、command控件先,然后在map属性中add图层states.shp.</P> <P>Private Sub Command1_Click()<BR> Set recs = Map1.Layers(0).Records<BR> recs.Edit<BR> recs.Delete<BR> recs.MoveNext<BR> recs.StopEditing<BR> Map1.Refresh <BR> Adodc1.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=DSN=Visual FoxPro Database;UID=;SourceDB=" ; App.path ; "\temp2\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes"</P> <P><BR> Adodc1.RecordSource = Map1.Layers(0).Name</P> <P> Adodc1.CommandType = adCmdTable<BR> Adodc1.Refresh<BR> Set DataGrid1.DataSource = Adodc1'''''''''''''''''''将dbf文件绑定到datagrid上<BR> DataGrid1.Refresh<BR>End Sub</P> <P>不要按得太快,程序需要一定时间反应。</P> |
|
8楼#
发布于:2005-06-04 17:19
<P>谢谢<img src="images/post/smile/dvbbs/em04.gif" />,谢谢各位地指点,可是7楼地朋友说的数据挂接是什么意思,能不能说的在详细一些,或留下qq交流一下,谢谢</P>
|
|
9楼#
发布于:2005-06-03 09:29
<P>你的地图数据有没有挂接属性数据?</P>
<P>你必须要显示其他的代码,才可以知道为什么?</P> |
|
上一页
下一页