lcgxw
路人甲
路人甲
  • 注册日期2004-06-10
  • 发帖数136
  • QQ362770911
  • 铜币-12枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:5980回复:20

为什么pMoRst.Updatable总是为False呢?

楼主#
更多 发布于:2004-09-08 16:01
<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>
喜欢0 评分0
=======情======= 问世间情为何物,只叫我寂寞难耐。 =======钱======= 问世间钱为何物,只叫我囊中羞涩。
congra321
路人甲
路人甲
  • 注册日期2009-05-27
  • 发帖数17
  • QQ
  • 铜币135枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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编辑过]
举报 回复(0) 喜欢(0)     评分
congra321
路人甲
路人甲
  • 注册日期2009-05-27
  • 发帖数17
  • QQ
  • 铜币135枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2009-06-01 09:58
<P>我的就是用程序来加载图层的,但是仍然不能编辑哦,不能用.edit、.addnew等对数据表格进行编辑,希望高手解决!!非常感谢!</P>
举报 回复(0) 喜欢(0)     评分
meilaiying
路人甲
路人甲
  • 注册日期2009-03-31
  • 发帖数4
  • QQ
  • 铜币114枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2009-05-13 10:34
<P>我也遇到这样的问题~updatable属性是false </P>
<P>不知道该怎么解决~急啊~不知道LZ有解决没有??</P>
举报 回复(0) 喜欢(0)     评分
zhangkaicn
路人甲
路人甲
  • 注册日期2004-07-23
  • 发帖数14
  • QQ
  • 铜币144枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-14 22:40
<P>别着急  </P><P>我以前有相同的情况呢</P><P>你在窗体的 map 控件中 直接双击  加载了图层  在程序中 就不能更新了</P><P>要在程序写代码 来加载图层  就可以解决这个莫名其妙的问题啦  </P><P>希望你幸运  呵呵</P>
举报 回复(0) 喜欢(0)     评分
lcgxw
路人甲
路人甲
  • 注册日期2004-06-10
  • 发帖数136
  • QQ362770911
  • 铜币-12枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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" />
=======情======= 问世间情为何物,只叫我寂寞难耐。 =======钱======= 问世间钱为何物,只叫我囊中羞涩。
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
lcgxw
路人甲
路人甲
  • 注册日期2004-06-10
  • 发帖数136
  • QQ362770911
  • 铜币-12枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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,但是可以得到一些启发。
=======情======= 问世间情为何物,只叫我寂寞难耐。 =======钱======= 问世间钱为何物,只叫我囊中羞涩。
举报 回复(0) 喜欢(0)     评分
lcgxw
路人甲
路人甲
  • 注册日期2004-06-10
  • 发帖数136
  • QQ362770911
  • 铜币-12枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-09-10 10:20
<P>我的地图之间没有relation,我也将地图加载到另外一个程序中,结果是可以编辑、新增和删除的。</P><P>所以现在很郁闷,究竟是怎么搞的,MO这么弱啊。</P>
=======情======= 问世间情为何物,只叫我寂寞难耐。 =======钱======= 问世间钱为何物,只叫我囊中羞涩。
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2004-09-10 09:10
在VC中是我做的是不用Updatable的,C#中就不清楚了,不过也听说C#中做MO很烦。
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部