2013-02-21 93 views
0

我開始使用Lotus Notes C++ API。我正在嘗試獲取基於UNID的文檔。我知道一個特定的UNID,但我不知道如何將它寫入UNIVERSALNOTEIDLotus Notes C++ API通過UNID獲取文檔

我使用的是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'  

這裏是我需要學習的傳遞uGetDocument的正確方法。

+0

快速谷歌搜索發現[本文檔(http://www-12.lotus.com/ldd/doc /tools/c/6.0.2/api60ref.nsf/0/85255D56004D3F63852564DA001213E9?OpenDocument)。你正試圖給一個結構分配一個字符串。 – 2013-02-21 01:51:22

+2

@JoachimPileborg你是對的,但鏈接到的文檔是用於Notes C API,而不是Notes C++ API。 UNID是所有Lotus Notes開發中的一個基本概念,並且在各種API中使用不同的標識符和表示有點混淆。 – 2013-02-21 02:45:11

回答

3

LNDatabase :: GetDocument採用UNID *參數,而不是UNIVERSALNOTEID *。

要獲取UNID,請使用LNUniversalID類。有一個構造函數接受一個字符串參數,一個GetUniversalID方法返回指向UNID的指針。

1

@Richard施瓦茨提供我需要創建下面的代碼的有用信息:

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