242
//
entityCWAnswers->IDCWPublicationPageModel = en-
tityCWPublicationPageModels->IDCWPublicationPageModel;
entityCWAnswers->AnswerType = 1; // Word Type
if (!entityCWAnswers->Put ())
throw E_PUTANSWER;
entityCWAnswers->m_Table->m_dwIDCWAnswerStatus =
DBSTATUS_S_OK;
entityCWAnswers->m_Table->m_dwIDCWPublication-
PageModelStatus = DBSTATUS_S_IGNORE;
entityCWAnswers->m_Table->m_dwAnswerTypeStatus =
DBSTATUS_S_IGNORE;
if (!entityCWAnswers->Get ())
throw E_GETANSWER;
//
// Write to answers ID of the word and ID of the
definition
//
entityCWAnswerWord->IDCWAnswer = enti-
tyCWAnswers->IDCWAnswer;
CComVariant var;
xword.XWordGetWordData (i, wdtWordID, &var);
entityCWAnswerWord->IDWord = var.dblVal;
xword.XWordGetWordData (i, wdtDefID, &var);
entityCWAnswerWord->IDDef = var.dblVal;
// If word does not have a definition set ID of
empty dfefinition
if (entityCWAnswerWord->IDDef == 0)
{
CString sSQL;
sSQL.Format (L"SELECT IDDef FROM Defs
WHERE def = N'*'");
CCommand<CDynamicAccessor> command;
HRESULT hr = command.Open (theApp.m_Data-
Connection.m_session, sSQL);
if (FAILED(hr))
throw hr;
hr = command.MoveFirst();
if (FAILED(hr))
throw hr;
DB_NUMERIC num;
if(command.GetValue(L"IDDef", &num))
{
CXWDBVariant value = num;
entityCWAnswerWord->IDDef =
value.dblVal;
}
else
throw E_PUTANSWERWORD;
}
if (!entityCWAnswerWord->Put ())
throw E_PUTANSWERWORD;
//
// Write cells of the word
//
xword.XWordGetWordData (i, wdtCells, &var);
CComSafeArray<int> cells(var.parray);
ASSERT (cells.GetCount() != 0);