IBM Notes (lotus)

우선 가져오기위해 거쳐야 하는 Class를 알아보면 좋을것 같다.
* LNNotesSession 
   ㄴ LNDatabase
            ㄴ LNViewFolders  
                   ㄴ LNViewFolder
                            ㄴ   LNVFEntry 
                                      ㄴ LNItem                     <-------- (보기정보)에서의 값을 가져오려면
                                      ㄴ LNDocument
                                              ㄴ LNItem             <-------- (문서)에서 값을 가져오려면

중요한건!
LNVFEntry에서 직접 LNItem을 가져와야 보기정보의 값을 가져올수 있다.
보기정보의 값을 가져오는 이유는, 수식을 써서 데이터를 가공된 값을 가져올 수 있기 때문이다.
수식은 DB의 내장함수 같은거라고 보면 쉽다.

하지만, 보기정보만으로는 한계가 있는게, 첨부파일과 Body영역의 내용을 못가져온다.
그렇기 때문에 문서(LNDocument)객체를 통해서
Body와 첨부파일...그리고 Table(노츠에서도 테이블이라는 말이 맞을까 모르겠다)의 값을 뽑아낼 수 있다.




주요 샘플코드를 보여주자면.
    .....

int   view_column_count = View.GetColumnCount() ;

   LNItem  viewItem;
   LNString view_filed_name;
   LNString view_str;
   LNDatetimes view_date;
   LNRichText  view_richtext;
   LNITEMTYPE view_item_type;

   int vidx = 0;
   for(vidx = 0; vidx < view_column_count; vidx++)
   {
    viewItem = Entry.GetColumnItem(vidx, false) ;   // index가 아니라, 필드명으로도 가져오는 api가 있음
    if ( viewItem.IsNull() )
    {
     cout << "viewItem is NULL. skip!" << endl;
     continue;
    }

    view_filed_name= viewItem.GetName();
    view_item_type = viewItem.GetType();

....

   }

....

//Get the LNDocument associated with the view entry.
   Entry.GetDocument(&Doc);

   //Open the document.
   Doc.Open();

   LNText Item;
   if (Doc.HasItem(fieldName))
   {
    Doc.GetItem(fieldName, &Item);
    LNString Name = Item[0];

    //Get the indent level of each document.
    IndentLevels = Entry.GetIndentLevels();

    if (IndentLevels>=0 && IndentLevels<=3)
     cout << fieldName << ": " << Name << endl;   
    else
     cout << fieldName << "is Noresult" << Name << endl;   

   }

....




+ Recent posts