PDA

View Full Version : 偶的一段学习笔记:@UserAccess 和 NotesDatabase的CurrentAccessLevel属性


imzh
08-09-06, 04:10 PM
偶今天记录总结的一段学习笔记,觉得以后应该用得着。
贴上来大家一起学习:-)

@UserAccess 和 NotesDatabase的CurrentAccessLevel属性
-----------------------------------------------------

@UserAccess

给定一个服务器和文件名,指明当前用户对这个数据库的存取级别。

R5语法
@UserAccess( server : file )
R6语法
@UserAccess( server : file ; [ accessPrivilege ] )


参数
server
文本。服务器的名字。用空串 ("") 表示本地计算机。
file
文本。数据库的路径和文件名。请使用适当的操作系统格式来指定数据库的路径和文件名。
返回值
level : create documents : delete documents : create personal agents : create personal folders/views : create shared folders/views : create LotusScript/Java agent : read public documents : write public documents
文本列表。
level 是从 1 到 6 的数字,表示用户对数据库的存取级别。
level 用户存取级别
1 存放者
2 读者
3 作者
4 编辑者
5 设计者
6 管理者
create documents 是一个数字,如果用户能在数据库里创建文档,返回 1 (True),否则返回 0 (False)。
delete documents 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
create personal agents 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
create personal folders/views 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
create shared folders/views 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
create LotusScript/Java agent 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
read public documents 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
write public documents 是一个数字,如果用户能在数据库里删除文档,返回 1 (True),否则返回 0 (False)。
一个本地数据库中,@UserAccess 总是返回 6:1:1。如果当前用户对数据库的存取级别是“不能存取者”,Notes/Domino 将显示一条消息:“您未被授权执行此操作”。
用法
此函数不能用于列公式、选择公式或在服务器上运行的代理(邮件代理和定时执行代理)中。因此这个函数不能使用“Evaluate”语句。

样例:@UserAccess

1. 如果用户对服务器 Gaborone 上 DISCUSS 目录里的 NUN.NSF 数据库有“作者”存取级别,允许创建文档、删除文档、创建个人代理、创建个人视图和文件夹,但是没有创建共享视图和文件夹的权限,则下面公式返回 "3";"1";"1","1","1"0"。
@UserAccess( "Gaborone" : "discuss\\nun.nsf" )
2. 如果用户对当前数据库具有“管理者”存取级别,允许创建文档、删除文档、创建个人代理、创建个人和共享视图和文件夹、创建 LotusScript 和/或 Java 代理、读取和写公用文档,则下面公式返回 "6";"1";"1","1","1","1","1","1","1"。
@UserAccess( @DbName )


@UserAccess 的R6语法增加了个[accessPrivilege]可选参数:

The following return 1 (True) if the user has the specified privilege and 0 (False) if the user does not. These privileges are assigned in the Access Control List for the database.
[CREATEDOCUMENTS]
[DELETEDOCUMENTS]
[CREATEPERSONALAGENTS]
[CREATEPERSONALFOLDERSANDVIEWS]
[CREATELOTUSSCRIPTJAVAAGENTS]
[CREATESHAREDFOLDERSANDVIEWS]
[READPUBLICDOCUMENTS]
[WRITEPUBLICDOCUMENTS]
[REPLICATEORCOPYDOCUMENTS]

看其样例即可明白其新增可选参数用途:
This formula, when added to a form action button, creates a new document using the MyOpinion form if the current user has the privilege to create documents in the current (nun.nsf) database.
@If(@UserAccess( "" : "discuss\\nun.nsf" ; [CREATEDOCUMENTS]) = "1";@Command([Compose];"MyOpinion");@Prompt([OK];"Access denied";"Sorry, you do not have permission to create documents in this database."))


NotesDatabase的CurrentAccessLevel属性:
数据类型:整型常量
语法: level% = notesDatabase.CurrentAccessLevel

Legal values
ACLLEVEL_NOACCESS (0)
ACLLEVEL_DEPOSITOR (1)
ACLLEVEL_READER (2)
ACLLEVEL_AUTHOR (3)
ACLLEVEL_EDITOR (4)
ACLLEVEL_DESIGNER (5)
ACLLEVEL_MANAGER (6)

必须在数据库打开时使用这个属性

样例:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim level As Integer
Set db = session.CurrentDatabase
level = db.CurrentAccessLevel
If Not level<ACLLEVEL_EDITOR Then
Call doc.ReplaceItemValue("editting","yes")
Else
Call doc.ReplaceItemValue("editting","no")
End If

恋猪明
08-09-06, 09:15 PM
imzh 的学习精神非常好。。为了鼓励更多的朋友能有学习的动力。特此置顶10天。。。

liuyu0851
12-09-06, 09:56 AM
我想大家幫我填寫一下下面定義的意思!可能有點不明白!但是看了就清楚了!我覺得對初學的比較有用!比如說我!呵呵 ̄我是按我的一些想法來填寫的如果有遺漏或則錯誤請大家指出來!在此叩謝了!
開始

Dim Session As NewSession

把db定義為notes數據庫
Dim db As NotesDatabase


Dim dc As NotesdocumentCollection


把doc定義為當前notes正在使用的套表
Dim doc As NotesDocument


Dim WS As New NotesUIWorkspace


Dim uidoc As NotesUIDocument

定義docDateTime為當前notes的時間
Dim docDateTime As NoesdateTime


Dim rtirem As NotesRichTextItem


Dim item As Notesltem
現在正在查書和上網看帖 ̄有新的問題及時補充
個人認為在置顶帖上會有很多高手看!所以不要刪啊管理員們!再次叩謝

恋猪明
12-09-06, 04:50 PM
楼上。请参看我的帖子。。。

http://www.qqfamily.com/bbs/viewthread.php?tid=4243&highlight=

另外。提问请另外开贴。下不为例哦。。。。。。。

liuyu0851
14-09-06, 01:51 PM
ok知道了!謝謝bz

mfdefs
08-11-06, 03:16 PM
好呀!!!!!!!!!!!!!!!!!!!!!!!!

alex515
06-12-07, 11:19 PM
good.................