Lotus Notes C ++ API按UNID获取文档

时间:2013-02-21 01:48:50

标签: c++ lotus-notes lotus-domino lotus

我开始使用Lotus Notes C ++ API。我正在尝试根据UNID获取文档。我知道一个特定的UNID,但我不知道如何将它写入UNIVERSALNOTEID

我使用的是Lotus Notes 8.5.2,C ++ API 8.0.2,Windows 7 64位,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的正确方法。

2 个答案:

答案 0 :(得分:3)

LNDatabase :: GetDocument采用UNID *参数,而非UNIVERSALNOTEID *。

要获取UNID,请使用LNUniversalID类。有一个构造函数接受一个字符串参数,一个GetUniversalID方法返回指向UNID的指针。

答案 1 :(得分:1)

@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);
}