fit4u
路人甲
路人甲
  • 注册日期2004-07-30
  • 发帖数16
  • QQ
  • 铜币176枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2079回复:4

我会疯了,到底怎样才能使dataset 的readonly属性可以设为false?

楼主#
更多 发布于:2004-09-20 08:57


<P>我先前用odbc从数据库中渎数据生成新的图层同时用数据集绑定。</P>
<P>Mydataset:= Map1.Datasets.Add(miDatasetODBC,parm,emptyparam,'name','id',BindlayerObject,emptyparam,false);
    </P>
<P>但是向数据集中添加新的图元的参数时候 frmmain.Map1.Layers.Item[1].AddFeature(newobj,rvs);</P>
<P>抱错说dataset不能是readonly并且必须与layer绑定</P>
<P>但是我查文档 他说只有midatasetlayer型的数据集才能设置readonly 于是我删除原来odbc创建的dataset 重新绑定</P>
<P>dsetpnt:= frmmain.map1.datasets.add(midatasetlayer,lyr,'dset',lyr.keyfield,emptyparam,lyr.name,emptyparam,false);
还是抱同样的错,'此dataset不能assign to readonly'</P>
<P>请各位帮帮忙 看看。为这个 我一宿没睡了。</P>
<P>谢谢了。</P>
[此贴子已经被作者于2004-9-20 9:55:44编辑过]
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2004-09-20 10:25
<P>n久没动mapx了,现在也没装这个,帮不上忙</P><P>只有midatasetlayer型的数据集才能设置readonly </P><P>不是你生成地图数据的问题吧?</P>
举报 回复(0) 喜欢(0)     评分
fit4u
路人甲
路人甲
  • 注册日期2004-07-30
  • 发帖数16
  • QQ
  • 铜币176枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-20 19:19
<P>我用的就是记录集 还是抱错 'dataset readonly属性不能为readonly'</P><P>我改readonly属性又说不能改。</P><P>我现在用得最笨的方法 添加图元时候 把图层 和数据集都remove了</P><P>重新帮定 :(</P><P> <a href="mailtdu.jiang@gmail.com是我的邮箱" target="_blank" >du.jiang@gmail.com是我的邮箱</A></P><P>请您把小例子给我 我用delphi</P><P>vbvc借鉴一下吧</P><P>谢谢您了</P>
举报 回复(0) 喜欢(0)     评分
fit4u
路人甲
路人甲
  • 注册日期2004-07-30
  • 发帖数16
  • QQ
  • 铜币176枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-20 19:28
<P>另外我想到的另一个方法:</P>
<P>dataset.refresh方法该方法用于在数据中有更改时对地图的更新。
  Refresh方法被激活后,系统重读原数据源的数据从而对绑定图层的属性值进行modify 但是根本还是不管用 新的图元的各项值还是没有被绑定到图层中。</P>
<P>如果这样的话 以后即使是修改图元某个参数值都要删除图层 数据集 重新绑定 太。。。。。 请指教我这个弱人</P>

<P>请指教 谢谢</P>
[此贴子已经被作者于2004-9-20 19:29:53编辑过]
举报 回复(0) 喜欢(0)     评分
gzmslinzy
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数6
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-25 11:21
帮主:你好,你也得救救我啦,我用VC+mapx并通过ADO进行绑定SQL数据表,不行啊
<P>求救:</P>
<P>   long fieldcount=0;
void zjgisView::OnToolUsed(short ToolNum,double X1,double Y1,double X2,double Y2,double Distance,BOOL Shift,BOOL Ctrl,BOOL* EnableDefault)
{  
 
 CString str;
 CMapXPoint pt;
 CMapXFeatures fs;
 CMapXFeature f;
 pt.CreateDispatch(pt.GetClsid());
 pt.Set(X1,Y1);
 str.Format("Tool=%d,[%f,%f],[%f,%f],dist=%f,%s,%s\n",ToolNum,X1,Y1,X2,Y2,Distance,(Shift)? "Shift":" ",(Ctrl)? "Ctrl-": " ");
 TRACE(str);</P>
<P> SetRedraw(false);
  
 if(ToolNum==MYTOOL_INFO)
 {
  dlg.m_ctrList.ResetContent();
  
  try
  {
   if(m_ctrlMapX.GetDatasets().GetCount()==0)
   {   BSTR ColName;
    VARIANT sd;
             CMapXLayer layer;      
             layer =m_ctrlMapX.GetLayers().Item(1);
    sd.vt = VT_DISPATCH;
    sd.pdispVal = layer.m_lpDispatch;
    sd.pdispVal->AddRef();
    CString strLayername=m_ctrlMapX.GetLayers().Item(1).GetName();        
   // dataset =m_ctrlMapX.GetDatasets().Add(miDataSetLayer,sd,strLayername);
       CString sql=_T("SELECT * FROM 光点分布");            
    pRs->Open((_variant_t)sql,(IDispatch*)pConn,adOpenDynamic,adLockOptimistic,adCmdText);
       pRs->GetFields()->Item[long(0)]->get_Name(;ColName);
    dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false);
    fieldcount=dataset.GetFields().GetCount();
   }</P>
<P>   fs=m_ctrlMapX.GetLayers().Item(1).SearchAtPoint(pt);
   if(fs.GetCount()!=1)
   {
    return;
   }</P>
<P>   f=fs.Item(1);</P>
<P>   COleVariant vRow;
   COleVariant vVal;
   </P>
<P>   vRow.vt=VT_DISPATCH;
   vRow.pdispVal=f.m_lpDispatch;
   vRow.pdispVal->AddRef();</P>
<P>   CString strtemp;
          
   for(long i=1;i<=fieldcount;i++)
   {
      strtemp=dataset.GetFields().Item(i).GetName();
   strtemp+=_T(":");</P>
<P>   vVal=dataset.GetValue(vRow,COleVariant(i));
   if(vVal.vt!=VT_NULL)
   {
    vVal.ChangeType(VT_BSTR);  
    strtemp+=vVal.bstrVal;
   }
   dlg.m_ctrList.AddString((LPCTSTR)strtemp);</P>
<P>   }</P>
<P>      dlg.UpdateData(false);
   dlg.ShowWindow(SW_SHOW);
  
  }
 
  catch(COleDispatchException *e)
  {
   e->ReportError();
   e->Delete();
  }</P>
<P>  catch(COleException *e)
  {
   e->ReportError();
   e->Delete();
  
  }
 }</P>
<P>
SetRedraw(true);</P>
<P>}
</P>
<P>能通过编译并且可以运行,但是一使用显示工具显示属性就会弹出"operation is not allow on this datasets collection"</P>
<P>);
    dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false);
    </P>
<P>,(_variant_t)(IDispatch*)pRs是不是因为记录指针转换有问题啊,请大哥帮帮忙啊,困也一个星期了,我的邮箱是<a href="mailtgzmslinzy@163.com" target="_blank" >gzmslinzy@163.com</A> 谢谢了</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部