无法保存工作空间

0 投票

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

使用工作空间打开数据源后,希望保存工作空间和数据源的联系,尝试保存但是Save返回了0

UGDataSource *ds = NULL;
UGWorkspace *ws = OpenWorkspace(L"a.smwu");
UGDsConnection con;
con.m_nType = UGEngineType::UDB;
con.m_strServer = L"a.udb";
ds = ws->OpenDataSource(con);
ws->m_WorkspaceConnection.m_bFailIfExists = false;
ws->Save();

10月 26, 2019 分类:  109次浏览 | 用户: soratomo (7 分)
修改于 10月 26, 2019 用户:soratomo

1个回答

0 投票
 
已采纳
您好,从代码来看,没有什么问题。请确认工作空间文件已经打开,如果没有工作空间文件,请使用SaveAS()保存,以生成文件。
10月 28, 2019 用户: 幸俊 学富五车 (694 分)
采纳于 10月 30, 2019 用户:soratomo

调试了一下,发现工作空间虽然是打开了,但是其m_WorkspaceConnection的值似乎是未定义的,比如字符串全是乱码。

所以在调用Save前添加这些代码就能保存成功了:

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;

不过我还有一个疑问,打开工作空间后其成员变量m_WorkspaceConnection是本来就需要自己设置的吗?这样似乎Save和SaveAs没什么区别了。。。

您好,打开工作空间是根据传入的connection参数来打开的,wokspace内部的成员不用设置。只有m_bFailIfExists需要修改一下,默认为ture
...