MAPX 数据绑定时出现“建立空文档失败”

ykmlxc 2013-01-14 09:06:57
代码如下:参照C#过程写的,当运行到m_ctrlMapX.GetDatasets().Add出现建立空文档失败,各位高手请多多指点,小弟刚刚搞这个,菜鸟一只!另外我要把绑定数据中的基站按照经纬度的位置显示出来该怎么继续,敬请各位大侠救命呀!!!拜谢
files.CreateDispatch(files.GetClsid());
// files.Add(TEXT("基站名称"));
lon = TEXT("经度");
lat = TEXT("纬度");
str1 =TEXT("LINSHI");
// str2.vt =VT_BYREF|VT_BSTR;
str2 =TEXT("基站名称");
// str3.vt =VT_BYREF|VT_BSTR;
str3 =TEXT("物理站号");
files.Add(str2,str2, _variant_t(long(4)),_variant_t(long(0)));
// files.Add(TEXT("物理站号"));
files.Add(str3,str3,_variant_t(long(4)),_variant_t(long(0)));
// files.Add(TEXT("经度"));
files.Add(lon,lon,_variant_t(long(0)),_variant_t(long(1)));
// files.Add(TEXT("纬度"));
files.Add(lat,lat,_variant_t(long(0)),_variant_t(long(1)));

lay.CreateDispatch(lay.GetClsid());
lay.SetLayerName(TEXT("mylayer"));
lay.SetRefColumn1(14);
lay.SetRefColumn2(15);
lay.SetLayerType(miBindLayerTypeXY);

layerVt.vt = VT_DISPATCH;
// layerVt.pdispVal = pathline_layer .m_lpDispatch;
layerVt.pdispVal = rsNoPass;
layerVt.pdispVal->AddRef();
// str1.vt =VT_BYREF|VT_BSTR;


laytmp.vt = VT_DISPATCH;
laytmp.pdispVal = lay.m_lpDispatch;
laytmp.pdispVal->AddRef();
//laytmp.pdispVal->Release();

fil.vt = VT_DISPATCH;
fil.pdispVal = files.m_lpDispatch;
fil.pdispVal->AddRef();

// btmp.vt = VT_BOOL;
// btmp = TEXT("0");
btmp = _variant_t(long(0));

// 从 表导入数据
// m_MapXDataset = m_ctrlMapX.GetDatasets().Add(miDataSetADO, layerVt);
m_MapXDataset = m_ctrlMapX.GetDatasets().Add(miDataSetADO, layerVt,str1, str2,str3,laytmp,fil,btmp);
...全文
161 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ykmlxc 2013-01-15
  • 打赏
  • 举报
回复
没有高手吗?
ykmlxc 2013-01-15
  • 打赏
  • 举报
回复
下面代码绑定图层名称无效,大家帮帮忙吧,急急急急!!! void Cgsi_testView::test() { CMapXDataset ds; COleVariant rsVt; COptionalVariant optVt; CMapXBindLayer bindLayer; COleVariant bindLayerVt; CMapXFields Flds; CMapXLayerInfo Lyrinfo; COleVariant vtFlds; DBManager dbtmp; Flds.CreateDispatch(Flds.GetClsid ()); Lyrinfo.CreateDispatch(Lyrinfo.GetClsid()); //需要添加的字段 Flds.Add(TEXT("物理站号"),TEXT("物理站号")); Flds.Add(TEXT("基站名称"),TEXT("基站名称")); Flds.Add(TEXT("经度"),TEXT("经度")); Flds.Add(TEXT("纬度"),TEXT("纬度")); _RecordsetPtr pRecordset; dbtmp.ConnectDataBase(); _bstr_t sqlstr ="select 基站名称,物理站号,经度,纬度 from TMPTABLEZ"; pRecordset.CreateInstance("ADODB.Recordset"); // lyr=m_ctrlMapX.GetLayers().Item(long(1)); // LayerVt.vt=VT_DISPATCH; // LayerVt.pdispVal=lyr; // LayerVt.pdispVal->AddRef(); //帮定XY数据到图层 bindLayer.CreateDispatch(bindLayer.GetClsid()); // bindLayer.SetFilespec("C\\GPS.tab"); bindLayer.SetLayerName(TEXT("ykmtest"));//设置绑定图层名称 bindLayer.SetRefColumn1(TEXT("经度"));//设置 bindLayer.SetRefColumn2(TEXT("纬度")); bindLayer.SetLayerType(miBindLayerTypeXY); //帮定到MAPX bindLayer.AttachDispatch(m_ctrlMapX.GetDispatch()); bindLayerVt.vt=VT_DISPATCH; bindLayerVt.pdispVal=bindLayer.m_lpDispatch; bindLayerVt.pdispVal->AddRef(); try { pRecordset = dbtmp.m_pConnectionPtr->Execute(sqlstr,NULL,adCmdText); } catch(_com_error e) { MessageBox(e.Description(),TEXT("警告:读取信息表出错")); return ; } if(pRecordset!=NULL) { //if(pRecordset->GetRecordCount()<=0) //return; rsVt.vt=VT_DISPATCH; rsVt.pdispVal=pRecordset; rsVt.pdispVal->AddRef(); ////////////////////////////////////////////////////////////// long nDSCount=m_ctrlMapX.GetDatasets().GetCount(); for(long lItem=1;lItem<=nDSCount;lItem++) { if(m_ctrlMapX.GetDatasets().Item(lItem).GetName()=="test") { m_ctrlMapX.GetDatasets().Remove(lItem); } } try { COleVariant name(TEXT("test")); COleVariant colum(TEXT("物理站号")); ds=m_ctrlMapX.GetDatasets().Add(miDataSetADO,rsVt,name,colum,optVt,bindLayerVt,vtFlds,optVt); /* --------------------------- Unable to complete this type of bind with the reference column(s) specified. 或则说邦定图层名非法 */ } catch(COleDispatchException *e) { e->ReportError(); e->Delete(); } catch(COleException *e) { e->ReportError(); e->Delete(); } pRecordset->Close();pRecordset=NULL; } bindLayer.ReleaseDispatch(); dbtmp.m_pConnectionPtr->Close(); dbtmp.m_pConnectionPtr=NULL; }
ykmlxc 2013-01-14
  • 打赏
  • 举报
回复
是C++的 各位大侠高手都不在吗?
jimette 2013-01-14
  • 打赏
  • 举报
回复
不懂。。。。。。。。
jimette 2013-01-14
  • 打赏
  • 举报
回复
你这个是c++么》
ykmlxc 2013-01-14
  • 打赏
  • 举报
回复
回答的好继续加分

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧