首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>NOTES数据库中的未读文档操作

NOTES数据库中的未读文档操作

2001-07-02 11:56作者:代翔出处:yesky责任编辑:方舟


  主要程序如下:

//////////////////////////////////////////////////////
// InitNotes:初始化Notes环境,打开数据库
// szServerName:服务器名
// szDBName:数据库名
// szDirectory:Notes系统目录
// 返回值:1 - 成功
// 0 - 失败


int CNotes::InitNotes(char *szServerName,char *szDBName,char *szDirectory)

{

STATUS status;

char szPathName[MAX_PATH];

char szpInitPara[1][260];



// 数据库路径名=服务器名+“!!”+数据库名

if (strlen(szServerName)==0)

strcpy(szPathName,szDBName);

else {

strcpy(szPathName,szServerName);

strcat(szPathName,"!!");

strcat(szPathName,szDBName);

}

strcpy(szpInitPara[0],szDirectory);

if (!m_bOpened)

NotesInitExtended(1,(char**)szpInitPara); // 初始化Notes环境

status=NSFDbOpen(szPathName,&hDb); // 打开数据库

if (status!=NOERROR) {

m_bOpened=false;

return 0;

}

m_bOpened=true;

return 1;

}



///////////////////////////////////////////////////
// GetUnread:取得指定视图或文件夹中的未读文档数
// szViewName:视图或文件夹名
// 返回值:-1 - 失败
// 其他 - 未读文档数


int CNotes::GetUnread(char *szViewName)

{

STATUS status;

char szUserName[MAX_PATH];



status=SECKFMGetUserName(szUserName); // 得到当前用户名

if (status!=NOERROR) {

m_bGetUnread=false;

return -1;

}

status=NSFDbGetUnreadNoteTable(hDb,szUserName,_
strlen(szUserName),true,&hTable);
// 取得数据库的未读文档列表


if (status!=NOERROR) {

m_bGetUnread=false;

return -1;

}

if (hTable==NULL) {

m_bGetUnread=false;

return -1;

}



status=NSFDbUpdateUnread(hDb,hTable); // 更新未读文档列表

if (status!=NOERROR) {

OSMemFree(hTable);

m_bGetUnread=false;

return -1;

}



status = NIFFindView(hDb, szViewName, &ViewID); file://得到数据库的某视图或文件夹

if (status!=NOERROR) {

OSMemFree(hTable);

m_bGetUnread=false;

return -1;

}



status=NIFOpenCollection(hDb,hDb,ViewID,0,hTable,_
&hCollection,NULL,NULL,NULL,NULL);


if (status!=NOERROR) {

OSMemFree(hTable);

m_bGetUnread=false;

return -1;

}



status =NIFUpdateCollection(hCollection);

if (status!=NOERROR) {

NIFCloseCollection(hCollection);

OSMemFree(hTable);

m_bGetUnread=false;

return -1;

}



COLLECTIONPOSITION CollPosition;

CollPosition.Level = 0;

CollPosition.Tumbler[0] = 0;

HANDLE hBuffer;

DWORD NotesFound;

WORD SignalFlags;

Status=NIFReadEntries(hCollection,&CollPosition,_
NAVIGATE_NEXT,1L,NAVIGATE_NEXT,0xFFFF,READ_MASK_NOTEID,_
&hBuffer,NULL,NULL,&NotesFound,&SignalFlags);


if (status!=NOERROR) {

NIFCloseCollection(hCollection);

OSMemFree(hTable);

m_bGetUnread=false;

return -1;

}

int iViewUnread=0;

NOTEID NoteID;

BOOL fFirst=TRUE;

unsigned int i;

NOTEID* IdList;

if (hBuffer != NULLHANDLE)

{

IdList = (NOTEID far *)OSLockObject(hBuffer);



while(IDScan(hTable, fFirst, &NoteID)) // 依次取得hTable表中的文档号

{

fFirst = FALSE;

for (i=0; i

if (NoteID==IdList[i]) {

iViewUnread++;

break;

}

}

OSUnlockObject(hBuffer);

OSMemFree(hBuffer);

}



NIFCloseCollection(hCollection);

OSMemFree(hTable);

m_bGetUnread=true;

return iViewUnread;

}



//////////////////////////////////////////
// CloseNotes:关闭Notes数据库


void CNotes::CloseNotes()

{

if (m_bOpened)

NSFDbClose(hDb);

m_bOpened=false;

m_bGetUnread=false;

}


共3页。 9 1 2 3 :

关注此文的读者还看过:

返回开发频道首页

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络