阅读:1776回复:2
有没有真正懂的?2个经典问题~没人回答再也不来了*_*!
<P>(1)这里有个历史遗留问题,请使用VC+MO的朋友都来看看。<BR>我用AddRelate查“关键字”在本论坛搜了一下。<BR>看到有很多贴子提到了在VC环境下使用AddRelate函数关联不上的问题,而在VB下似乎又不是问题。大家在仿造MO中VB示例时,都写成类似以下的C语句:<BR>CMoTable m_ParcelTable; <BR>m_ParcelTable.CreateDispatch("MapObjects2.Table"); //建一个空表 <BR>m_ParcelTable.SetDatabase("ODBC;DSN=aaa;UID=bbb;PWD=bbb"); //指定外部数据库 <BR>m_ParcelTable.SetName("tablename"); //指定数据库中的具体表 <BR><BR>VARIANT v; <BR>VariantInit(;v); <BR>v.vt = VT_BOOL; <BR>v.boolVal = true; <BR>maplayer.AddRelate("Name",m_ParcelTable,"Name",v); //关联时返回不成功 <BR>///////////////////////////////////////////////////////////////////////////////////////<BR>CMoTable table; <BR>table.CreateDispatch("MapObjects2.Table"); <BR>table.SetDatabase("GIS");//ODBC中的数据源名 <BR>table.SetName("LOVE");表名 <BR>VARIANT vt; <BR>vt.boolVal=false; <BR>if (layer.AddRelate("INDEX",table,"FID",vt)) <BR><BR><BR>而最终似乎都是关联不成功,关于这个问题本论坛上,目前为止还没有一个很准确的答案。还请关联成功的大侠们谈谈心得,解决这个历史遗留问题。</P>
<P>(2)用RecordSet可以将dbf中的属性数据读出来,但是编辑的时候总出错,用RecordSet.Edit()或者Record.Update()都会提示"Edit Failed!",用SetValue提示“无法写只读特征”,看到有人说mo只能修改shapefile数据,是这样么?但是它提供了SetValueAsString方法啊~~~</P> <P>文件属性检查过了,“只读”并没有钩上~</P> <P>--------------------------------------------------</P> <P>问的问题大部分都石沉大海了~这么多人在转悠,到底有没有人做过???一两句话就能帮很大的忙······心里拔凉~</P> |
|
1楼#
发布于:2007-05-19 21:39
CMoRecordSet.GetUpdatable()返回0是什么原因?使用SetUpdatable()又会出错,到底该怎么办???
|
|
2楼#
发布于:2007-06-07 00:34
<P>maplayer.AddRelate("Name",m_ParcelTable,"Name",v); //关联时返回不成功<BR>第一个参数和第三个参数名不能相同.</P>
<P>因为数据库的表中不能有两项的属性名相同.</P> |
|