阅读:5980回复:20
为什么pMoRst.Updatable总是为False呢?
<P> Dim pLayer As MapObjects2.MapLayer
Dim pMoRst As MapObjects2.Recordset Set pLayer = .Layers(0) Set pMoRst = pLayer.Records Set m_Point = .ToMapPoint(X, Y) If pMoRst.Updatable Then pMoRst.AddNew pMoRst.Fields("Shape") = m_Point pMoRst.Update pMoRst.StopEditing End If .Refresh ///////////////////////////////////////////</P> <P>为什么这个时候pMoRst.Updatable总是为False呢?</P> <P>希望大虾给予帮助。</P> |
|
|
1楼#
发布于:2009-06-01 10:40
<P>解决了,去掉你要修改的文件的只读属性(不是你看见的文件属性里的,用vfp可以看见),以下是去掉属性的代码,不过注意备份原文件</P>
<P>Private Sub SetClearArchiveBit(filespec) ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 去掉文件属性<br> Dim fs, f, r<br> <br> ChDir "d:\t" ‘文件所在文件夹的位置,本帖中的.Layers(0) 所指的文件<br> Set fs = CreateObject("Scripting.FileSystemObject")<br> Set f = fs.GetFile(fs.GetFileName(filespec))<br> If f.Attributes And 32 Then<br> r = MsgBox("The Archive bit is set, do you want to clear it?", vbYesNo, "Set/Clear Archive Bit")<br> If r = vbYes Then<br> f.Attributes = f.Attributes - 32<br> MsgBox "Archive bit is cleared."<br> Else<br> MsgBox "Archive bit remains set."<br> End If<br> Else<br> r = MsgBox("The Archive bit is not set. Do you want to set it?", vbYesNo, "Set/Clear Archive Bit")<br> If r = vbYes Then<br> f.Attributes = f.Attributes + 32<br> MsgBox "Archive bit is set."<br> Else<br> MsgBox "Archive bit remains clear."<br> End If<br> End If<br> End Sub</P> [此贴子已经被作者于2009-6-1 10:42:18编辑过]
|
|
2楼#
发布于:2009-06-01 09:58
<P>我的就是用程序来加载图层的,但是仍然不能编辑哦,不能用.edit、.addnew等对数据表格进行编辑,希望高手解决!!非常感谢!</P>
|
|
3楼#
发布于:2009-05-13 10:34
<P>我也遇到这样的问题~updatable属性是false </P>
<P>不知道该怎么解决~急啊~不知道LZ有解决没有??</P> |
|
4楼#
发布于:2004-09-14 22:40
<P>别着急 </P><P>我以前有相同的情况呢</P><P>你在窗体的 map 控件中 直接双击 加载了图层 在程序中 就不能更新了</P><P>要在程序写代码 来加载图层 就可以解决这个莫名其妙的问题啦 </P><P>希望你幸运 呵呵</P>
|
|
5楼#
发布于:2004-09-13 08:53
<DIV class=quote><B>以下是引用<I>lixaokui</I>在2004-9-10 13:27:32的发言:</B>
<P>VARIANT va; VariantInit(;va); va.vt = VT_DISPATCH; va.pdispVal = LPDISPATCH(point); CMoLayers lyrs(m_map->GetLayers()); CMoMapLayer lyr(lyrs.Item(COleVariant(index))); lyr.RemoveRelates(); CMoRecordset recs(lyr.GetRecords()); CMoFields fields(recs.GetFields()); CMoField field(fields.Item(COleVariant(TEXT("Shape")))); recs.AddNew(); field.SetValue(va); SetValue(fields,"X",point.GetX()); SetValue(fields,"Y",point.GetY()); SetValue(fields,"Z",0.0); recs.Update(); recs.StopEditing();</P> <P>增加点到图层。</P></DIV> <P> <P>谢谢你给我答复。我看了你的这段程序,就是比我的多了一句释放图层关系的语句,其他的都是一样,很遗憾的说现在还是不好用。希望更多的人给予关注。再次感谢!</P> <img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em08.gif" /><img src="images/post/smile/dvbbs/em08.gif" /><img src="images/post/smile/dvbbs/em08.gif" /> |
|
|
6楼#
发布于:2004-09-10 13:27
<P> VARIANT va;
VariantInit(;va); va.vt = VT_DISPATCH; va.pdispVal = LPDISPATCH(point); CMoLayers lyrs(m_map->GetLayers()); CMoMapLayer lyr(lyrs.Item(COleVariant(index))); lyr.RemoveRelates(); CMoRecordset recs(lyr.GetRecords()); CMoFields fields(recs.GetFields()); CMoField field(fields.Item(COleVariant(TEXT("Shape")))); recs.AddNew(); field.SetValue(va); SetValue(fields,"X",point.GetX()); SetValue(fields,"Y",point.GetY()); SetValue(fields,"Z",0.0); recs.Update(); recs.StopEditing();</P><P>增加点到图层。</P> |
|
|
7楼#
发布于:2004-09-10 10:22
<DIV class=quote><B>以下是引用<I>lixaokui</I>在2004-9-10 9:10:18的发言:</B>
在VC中是我做的是不用Updatable的,C#中就不清楚了,不过也听说C#中做MO很烦。</DIV> 你不用Updatable,那么你是怎么处理的呢,方便贴一下代码吗?谢谢了先,我用的是VB,但是可以得到一些启发。 |
|
|
8楼#
发布于:2004-09-10 10:20
<P>我的地图之间没有relation,我也将地图加载到另外一个程序中,结果是可以编辑、新增和删除的。</P><P>所以现在很郁闷,究竟是怎么搞的,MO这么弱啊。</P>
|
|
|
9楼#
发布于:2004-09-10 09:10
在VC中是我做的是不用Updatable的,C#中就不清楚了,不过也听说C#中做MO很烦。
|
|
|
上一页
下一页