首页 / 浏览问题 / 组件GIS / 问题详情
修改对象记录集
35EXP 2020年04月10日

iobjectscpp 9d 910    win10 x64

1.对CAD图层对象设置风格无效。在设置之前已经打开编辑功能

	UGDatasetVector * dataset = (UGDatasetVector *) m_pWorkspace ->GetDataSource(0)->GetDataset (_U("Tower_CAD"));

	dataset->Open();
	UGQueryDef query = UGQueryDef();   
	UGRecordset* recordset = dataset->Query(query);
	int count = recordset->GetRecordCount();
	recordset->MoveTo(0);
	UGGeometry * pTempGeomtry = nullptr;
	recordset->GetGeometry(pTempGeomtry);

	UGStyle *style = new UGStyle;
	style->SetFillForeColor(UGRGB(255,0,0));
	style->SetFillOpaqueRate(60);
	pTempGeomtry->SetStyle(style);
	qMapControl->Refresh();

2.当我脱离数据集创建一个记录集用于保存部分数据集中的对象,让其进行缓冲分析,但提示recordset->AddNew()返回-1。

    UGDatasetVector * dataset = (UGDatasetVector *) m_pWorkspace ->GetDataSource(0)->GetDataset (_U("Tower_R"));

	dataset->Open();
	UGQueryDef query = UGQueryDef();   
	UGRecordset* recordset = dataset->Query(query);
	int count = recordset->GetRecordCount();

	UGRecordset *re = new UGRecordset();
    recordset->MoveTo(i - 1);
	UGGeometry * pTempGeomtry = nullptr;
	recordset->GetGeometry(pTempGeomtry);

	int ret = re->AddNew(pTempGeomtry);  //返回-1
	ret = re->Update();

2 个回答

测试后给你回复
4,620EXP 2020年04月10日
好的,麻烦您了
第一个问题,设置风格后,需要将对象通过recordset.setgeometry设置回去;recordset->Edit;recordset->setgeometry;recordset->Update;
4,620EXP 2020年04月10日
好的,感谢您
第二个问题的呢
为什么要新建一个ugrecordset来做缓冲区呢,直接query查询出需要的记录,直接用结果记录去做缓冲区就可以了。 通过UGQueryDef去设置条件语句,比如获取出smid<3的记录;UGQueryDef-<m_strFilter = _U("smid <3");
如果我需要生成22,25-28共5条记录的缓冲区,不连续的,条件支持吗?
支持呀,条件就是通用的sql语句查询
类似UGQueryDef->m_strFilter = _U("smID=22 or (24<smID and smID<29)")这种格式?
两种写法:

smid in (22,25,26,27)

smid = 22 or smid >=25 and smid <=28
...