Lotus Notes C ++ API Получить документ по UNID

Я начинаю работать с Lotus Notes C ++ API. Я пытаюсь получить документ на основе UNID. Я знаю конкретный UNID, но я не знаю, как записать его в UNIVERSALNOTEID,

Я использую Lotus Notes 8.5.2, C ++ API 8.0.2, Windows 7 64-bit, Visual Studio 2008, C ++ (управляемый).

Я могу открыть базу данных.

 ....
//Get and open a database.
LNDatabase   SrcDb;
Session.GetDatabase( c, &SrcDb, chrServer );
SrcDb.Open();

Затем я пытаюсь получить документ.

 LNDocument ld;
const UNIVERSALNOTEID u = "00000000000000000000000000000000";
SrcDb.GetDocument(&u, &ld);

При компиляции я получаю ошибку

error C2440: 'initializing' : cannot convert from 'const char [33]' to 'const
UNIVERSALNOTEID'

Вот где мне нужно узнать, как правильно пройти u в GetDocument,

0

Решение

LNDatabase :: GetDocument принимает аргумент UNID *, а не UNIVERSALNOTEID *.

Чтобы получить UNID, используйте класс LNUniversalID. Есть конструктор, который принимает строковый аргумент, и метод GetUniversalID, который возвращает указатель на UNID.

3

Другие решения

@Richard Schwartz предоставил полезную информацию, необходимую для создания следующего кода:

//Declare document
LNDocument ld;

//Assign to string, convert to const char *, convert to LNString;
std::string strUNID = "F33DD4EA2E8FD32888257B0A0061C063";
const char * chrUNID = strUNID.c_str();
const LNString * lnstrUNID = new LNString(chrUNID);

//Get UNID *
LNUniversalID * lnUNID = new LNUniversalID(*lnstrUNID);
const UNIVERSALNOTEID * unidUNID = lnUNID->GetUniversalID();

//Get document.
LNSTATUS lsGetDocument;
NOTEID ln;
try
{
lsGetDocument = SrcDb.GetDocument(unidUNID, &ld);
LNSTATUS lsStatus = ld.Open();
ln = ld.GetNoteID();
Console::Write("NOTEID: ");
Console::WriteLine(ln.ToString());
}
catch (System::Exception ^e)
{
String^ eMessage = e->Message;
Console::WriteLine(eMessage);
}
1

По вопросам рекламы [email protected]