属性编辑的问题

前两天以为问题已经解决了,可是再将操作可行的MEXICO数据删除之后,重新加载就不行了。程序应该没有问题,本来以为是源数据的问题,在论坛上找了有没有相似的情况,发现好像VC+MO在做属性编辑的时候,记录集是锁定的,不可编辑。
 
二次开发看来就是有这个问题,很多东西没有办法知道他到底怎么做的。
 
  CString str;
  str = objdlg.m_CurText;
  int ii;
  VARIANT vaExtent;
  VARIANT vaAttr;
  VariantInit(&vaExtent);
  VariantInit(&vaAttr);
  vaExtent.vt = VT_DISPATCH;
  //vaAttr.vt = VT_BSTR;
  //vaAttr.bstrVal = str;
  CMoLayers layers(m_Map.GetLayers());
  CMoMapLayer maplayer;
  CMoRecordset recs;
  CMoTableDesc tableDesc;
  CMoFields fields;
  str.Format("%d", recs.GetUpdatable());
  MessageBox("GetUpdatable " + str);
  recs.SetUpdatable(TRUE);
  if(!recs.GetUpdatable())
  {
   MessageBox("OnSaveObject the recordset is not editable");
   return;
  }
  
  //如果保存至的图层类别包括下面的对象,那么保存不成功
  switch(maplayer.GetShapeType())
  {
   //图层类型是点
  case 21:
   {
    if(m_dPolygonArray.GetSize() > 0)
     MessageBox("选定的图层类型为点,不能保存多边形对象");
    if(m_dLineArray.GetSize() > 0)
                    MessageBox("选定的图层类型为点,不能保存线对象");
    
                for(ii = 0; ii < m_dPointArray.GetSize(); ii++)
    {
     //MessageBox("run here");
     recs.AddNew();
     CMoPoint pt(*m_dPointArray[ii]);
     vaExtent.pdispVal = pt.m_lpDispatch;
     fields.Item(CComVariant("Shape")).SetValue(vaExtent);
     recs.Update();
    }
   }
   break;
   case 22:
   break;
   case 23:
   break;
  }
 
CMoRecordset recs.GetUpdatable()返回是FALSE,显示记录集不可编辑,但是recs.SetUpdatable(TRUE)又显示“不能写只读属性”。

你可能感兴趣的:(属性编辑的问题)