우선 가져오기위해 거쳐야 하는 Class를 알아보면 좋을것 같다.
ㄴ 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;
}
....