|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
lotus notes常见问题答疑
问:当硬盘空间不够时,如何压缩我的Notes工作台?
答:由于Notes数据库是典型的文档型数据库,因此长期使用后会占用较大硬盘空间
,为此我们需要经常对这些数据库进行压缩。常用的压缩方法是:
1.用鼠标右键单击任意工作台页面,并且选择“工作台属性”。
2.在“工作台”属性框中选择第二个属性按钮,并单击压缩按钮实现压缩。
问:对自行开发的数据库,如何将其保存为模板,以便于以后使用?
答:如果已经开发或更改了某个数据库,我们通常希望保存它的结构,以便用于今后的开发。这种做法不仅节省时间,而且在应用程序间保证了一致性。我们利用以下步骤可以实现把某数据库保存为模板:
1.选择“文件数据库新建拷贝”。
2.在“拷贝数据库”对话框中,输入服务器、标题和文件名,其中文件扩展名为NTF。
3.选择数据库设计复选框,并保存为数据库。
4.单击“确定”按钮,生成数据库模板。
问:在调试Lotus Domino程序时,经常会触发执行qnc.exe程序并退出Notes,如何解决?
答:在调试Lotus Domino/Notes程序时,由于程序设计的问题,我们经常会触发执行qnc.exe程序,并提示错误。其实qnc.exe执行目的只是Notes的内存保护性措施,并不一定是程序本身有错误。为了便于调试程序,我们可以在Lotus Domino指令窗口内键入
qnc _u,使其暂停运行。 如果想恢复时可以再用qnc _i指令装载它。
问:服务器重装后,对一台曾经安装过Notes客户端的机器如何重新连接到新服务器
答:首先你需要利用新建的服务器生成一个新的用户ID文件,并删除原ID文件。
为了在客户端不重新安装Notes,我们需要重新设置客户端如下:
1.删除desktop.dsk、log.nsf和names.nsf文件。
2.在文本编辑器中编辑Notes.INI文件,保留该文件中的前六行内容,其余内容全部删除,保存Notes.INI文件并退出。
当你再次双击Notes图标时,Notes系统会自动执行安装程序,你只需用新的用户ID文件进行简单的设置即可连接到新服务器上。
问:在使用过程中,当Notes异常退出时,如何才能再次运行Notes?
答:通常Notes异常退出,系统是不能再次运行Notes的。这时常见的方法是重新启动计算机并运行Notes。
其实我们也可以不重启计算机而马上开始Notes,即我们手动杀死一个因Notes异常退出而遗留在内存中的进程nhldaemn.exe,然后我们就可再次启动Notes。
问:在开发Lotus Notes应用系统时,如何隐藏Lotus本身的选单?
答:为了隐藏Lotus本身的选单条,我们需要添加以下定义:
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Declare Function SetMenu Lib "user32.dll" ( Byval hmenu As Long, Byval newmenu As Long ) As Integer
然后,在你的脚本中添加下面的程序:
Dim hwnd As Long
hwnd = GetActiveWindow()
Call SetMenu(hwnd,0)
通过以上几个步骤,你就可以实现隐藏Lotus本身的选单条了。
问:当服务器启动时,Notes显示消息说“找不到Notes.INI文件”,这时如何解决?
答:如果你运行的是Windows版本的Notes服务器软件,使用写字板去显示和编辑AUTUEXEC.BAT文件,在PATH语句中添加Notes.INI文件所在目录,并重启动机器。
问:开发Lotus Notes应用系统时,如何更改窗口标题条文字?
答:为了使开发的Lotus Notes应用系统更加商业化,我们需要更改Notes窗口标题条文字。
我们可以在文本编辑器中打开notes.ini文件,在其中加上一行代码: Window_Title=string。
其中string就是我们需要的窗口标题条文字。
:数据库的文档时常出现复制与保存冲突,如何解决?
A:"复制与保存冲突"是由于同时有两个或两个以上用户对同一文档进行修改,或者是多个用户对同一文档的不同副本进行修改,复制时就会造成复制冲突。对于公用数据库,可以通过把视图作为"共享首次使用为私有的"来避免。另外,选中表单的“合并复制冲突”属性可以把对同一文档的不同域的修改合并到同一个文档中以避免复制冲突,但如果是对同一个域的修改仍然会出现冲突文档。
Q:如何获得Domino(服务器)端的时间?
A:可以在需要取得服务器时间时,在服务器上创建一个新文档,取得这个文档的创建时间就行了,注意不保存这个新文文档。
Q:如何用Lotus Script 删除私有视图?
A:如下: Dim session As New notessession
Dim db As notesdatabase
Dim doc As notesdocument
Set db=session.currentdatabase
Forall i In db.views
Set doc=db.getDocumentByUNID(v.universalID)
' 这个地方视图当作文档来处理,以便取到视图的一些属性。
viewflag=doc.getItemvalue("$flags")
If viewflag(0)="pYV" Then
' 视图属性中$flags为"pYV"的是私有视图。
Call i.remove
End If
End Forall
Q:如何用浏览器访问基于NT的Domino服务器呢? 因为NT上的缺省主页是MICROSOFT的,我不知如何改为为Domino的.
A:NT Server缺省使用MICROSOFT主页是由于启动了NT自带的IIS服务,有以下三种解决方法:
1。关闭NT本身的IIS服务,使Domino Server的http服务器能够使用80端口。
2。修改Domino上http任务的端口为80以外都某一个值,然后从Domino Server 输入Load http命令以启动http任务。当从浏览器访问 Domino数据库时,在URL地址后加端口号,如 www.lotus.com.cn:81
3。把Domino Server与IIS集成,使IIS能够访问Domino数据库,然后在IIS中设置缺省主页为Notes数据库。
Q:Notes可以在iMAC上运行吗
指的不是iMAC的PC界面下。是通过APPLE TALK互连吗?
A:Notes Client有Mac的版本,但Domino Server就不能跑在Mac上了,另外Notes支持Apple talk网络协议。
Q:怎么把domino设置SMTP服务器
如何把domino设置成一个用来发信的smtp服务器(可以不收信). 按照缺省设置,发信的时候总是说地址当中包含非ASCII字符.
A:非ASCII字符通常是由于中文用户名造成的。
设置Domino Server为SMTP Server,都需要在服务器文档中设置:
路由任务:邮件路由、SMTP路由
全限定的Internet主机名:主机名+Internet域名(用。连接)
SMTP监听任务:启用
如4.6前版本须另外安装SMTP MTA,R4.6x把 SMTP MTA 集成到Domino Server中,R5以后Domino坝SMTP做成了服务器上的一个任务,不需要另外安装MTA。 R4的SMTP MTA配置在帮助文档中有详细描述,主要在如下几个文档(都存在于公共通讯录中)中进行相应的设置
1、服务器文档中的SMTP MTA
2、网络域(GLOBALDOMAIN)
3、网络域(外部SMTP网络域)
4、连接文档(从服务器到ANYHOST)
首先需要设置一台单独的服务器用于收发Internet邮件(即邮递任务为SMTP邮件邮递),然后在公用通讯录中设置全球网络域、外部的SMTP网络域和SMTP连接文档三个文档。
全球网络域中主要设置:
在“基本”区段:全球网络域名称,“全球网络域角色”为“SMTP MTA”,“缺省全球网络域”
在“SMTP地址转换”区段:“Internet网络域后缀”及 Notes网络域设置
SMTP网络域中设置:Internet网络域为*.*,任意设置一个网络域名称。
新建一个服务器连接文档,设置连接类型为SMTP,目的网络域与前面在"SMTP网络域"中设置的Internet网络域相同,另外应设置有一个待发消息就发送完成以上配置后即可。
R5的SMTP可以直接使用操作系统的DNS,只需要在Domino目录的配置文档中的"路由/SMTP"页,基本区段下设置:
离开本地Internet网络域的消息使用SMTP
离开本地Internet网络域的转发主机:如果是通过代理服务器或防火墙连接到Internet上,则输入其IP地址;如果是直接连接到Internet上,则该域为 空修改完成后,重新启动DOMINO服务器。
Q:如何从数据库A的文档中通过单击打开另一个数据库B的文档?
A:在数据库A的表单中创建一个RTF域,用NotesRichTextItem的AppendDocLink建立连接即可。或是在编辑模式下,打开数据库B的文档,然后从编
辑菜单下单击链接式拷贝--文档链接,然后在数据库A表单的RTF域中粘贴即可
lotus notes常用代码
1.检测当前用户是不是文档的创建者,如果不是,不允许编辑文档。
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim doc As notesdocument
Dim userName As New NotesName(session.UserName)
Set doc=source.document
If Not ( source.EditMode ) Then
If ( doc.authors(0) = username.CANONICAL ) Then continue=True
Else Msgbox "您不是此文档的创建人,不可以修改!",0,"文档数据库"
continue=False
End If End If End Sub
2.退出时检测关键的域不能为空
Sub Click(Source As Button)
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc=w.currentdocument
name1=uidoc.fieldgettext("name")
If name1="" Then
Messagebox "姓名不能为空!",0,"通讯录"
Exit Sub
End If
Call uidoc.save
Call uidoc.close
End Sub
3.用私有视图来显示需要当前用户处理的文档,用以下视图公式:
注意建立视图时不要选中"保存到本地"选项,否则调试不便.
SELECT Form = "收文1" & NextApprover=@Name([CN];@V3UserName)
4.Notes中Active控件
当文档中添加OLE或其他通用的ActiveX控件后,在文档的script编辑框右侧中,会自动添加各种属性和方法在notes的类列表中.在script中声明该对象的 方法如下:
Sub Postopen(Source As Notesuidocument)
Dim w as notesuiworkspace
Dim uidoc as notesuidocument
Dim aa As Variant
Set w =New notesuiworkspace
Set uidoc =w.currentdocument
Set aa=uidoc. getObject("Chart")'该句为ole对象声明,注意Chart是你给对象起的名字 '接下来你就可以通过aa.**来调用其方法和属性了.
End Sub
5.以下是script错误陷阱代码
Sub subname On Error Goto Errcode '下面添加你的程序代码
Exit Sub Errcode: Msgbox "错误 (" & Cstr(Err) & " ) -> " & Error$(Err),16,"错误提示"
Exit Sub
End Sub
6.是否保存
在表单中设定一个域,名称为saveoption
下列公式添加到返回按钮中,决定文件退出是否保存
FIELD saveoptions:="1"; 保存 FIELD saveoptions:="0"; 不保存
7.用公式弹出对话框,按确定继续,取消返回.
@If(@DialogBox("表单名";[AutoHorzFit]:[AutoVertFit];"表单标题");"";@Return(""))
8.用script弹出对话框,按确定继续,取消返回
Dim w as notesuiworkspace
If Not w.dialogbox("表单名",True,True,False,True,False,False,"填写")
Then doc.close'用户按取消退出
Exit Sub
End If
9.视图中删除文档语句
@Command([EditClear]);
@Command([ViewRefreshFields])
10.检测是否是周末
Dim dt as notesdatetime
call dt.setnow
If Weekday(dt.lslocaltime)=7
Then'是周六耶,
dt.adjustday(2) '加两天到星期一
Elseif Weekday(dt.lslocaltime)=1
Then'周日加一天
dt.adjustday(1)
End If
11.得到当前的服务器和路径
公式: ResideServer := @Subset(@DbName; 1) ;
CurrentPath := @Subset(@DbName; -1) ;
DirOnly := @If(@Contains(CurrentPath; "\\");
@LeftBack(CurrentPath; "\\") + "\\"; "");
DbFile := DirOnly + "***.NSF";
12.得到当前用户名
公式:@Name([CN];@V3UserName)
script:Dim s as notessession
Dim myname as newnotesname(s.username)
messagebox myname.common
13.得到当前日期公式:
@today @date(@created)
script:Dim dt as notesdatetime
Set dt=New notesdatetime("")
Call dt.setnow
14.常用全局对象声明 '-----对象变量-----
Dim w As NotesUIWorkspace
Dim s As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem
Dim dt As NotesDateTime
Dim username as notesname
15.一些计算域,开始时没有值,如果不给它一个值会报错,以下公式给计算域赋值@if(Bfield="";0;Bfield)
16.特殊字符
@char(13)可以在@prompt提示框中显示回车 script中用函数chr(13)
17.再notes状态兰中显示进度条(转贴)
(Declarations) Const NPB_STATUSBAR% = 32
Declare Sub NEMProgressEnd Lib "nnotesws.dll" ( Byval hwnd As Long ) Declare Function NEMProgressBegin Lib "nnotesws.dll" ( Byval wFlags As Integer ) As Long
Declare Sub NEMProgressSetBarPos Lib "nnotesws.dll" ( Byval hwnd As Long, By val dwPos As Long)
Declare Sub NEMProgressSetBarRange Lib "nnotesws.dll" ( Byval hwnd As Long,Byval dwMax As Long )
Declare Sub NEMProgressSetText Lib "nnotesws.dll" ( Byval hwnd As Long, Byva l pcszLine1 As String, Byval pcszLine2 As String )
Sub Click(Source As Button)
Dim hwnd As Long Dim i As Long
Dim j As Long 'Create the progress bar hwnd = NEMProgressBegin( NPB_STATUSBA
R ) 'Set the bar range - the default is 100 NEMProgressSetBarRange hwnd, 100
For i = 0 To 100 'Simple delay for the example!!
For j = 0 To 5000 Next 'Update the bar position NEMProgressSetBarPos hwnd, i
Next 'Destroy the dialog when we're done NEMProgressEnd hwnd End Sub
|
|