工作空间打开数据源保存后,下次打开工作空间,数据源打开失败

0 投票

使用产品:iobjectscpp 9.1.0 操作系统:win10 x64
数据类型: 文件型
问题详细描述:

工作空间本来没有数据源,使用如下代码打开数据源并保存,返回true:

UGDataSource *ds = NULL;
UGWorkspace *ws = OpenWorkspace(L"a.smwu");
UGDsConnection con;
con.m_nType = UGEngineType::UDB;
con.m_strServer = L"a.udb";
cout << "打开数据源:" << ((ds = ws->OpenDataSource(con)) ? "成功" : "失败") << endl;
	
ws->m_WorkspaceConnection.m_strServer = L"a.smwu";
ws->m_WorkspaceConnection.m_nVersion = UG_WORKSPACE_VERSION_20120328;
ws->m_WorkspaceConnection.m_nWorkspaceType = UGWorkspace::WS_Version_SMWU;
ws->m_WorkspaceConnection.m_bFailIfExists = false;
cout << "保存工作空间:" << (ws->Save() ? "成功" : "失败") << endl;

结果是,下次再打开工作空间时,无法正常打开数据源,在超图里面的表现是这样的:

数据源下面显示了一个空名字的数据源,无法关闭

尝试在超图里面添加同一个数据源a.udb并保存,结果一切正常,所以应该不是数据源的问题,而是代码中打开数据源的方式问题。

尝试在打开数据源的时候设置数据源的strAlias为"a",再在超图里面打开,结果是数据源下面显示"a",然而还是输出“打开数据源'a'失败“,不过这次可以关闭数据源了。

请问应该怎么改呢?

11月 2, 2019 分类:  147次浏览 | 用户: soratomo (7 分)
修改于 11月 2, 2019 用户:soratomo

1个回答

0 投票
您好,一般这种情况是数据源“独占”或者是数据源路径有问题。udb文件是只能一个程序打开的
11月 4, 2019 用户: 邬袁凯 名扬四海 (2,429 分)
但是问题是,如果直接打开udb文件是正常的,打开smwu文件却会打开数据源失败
...