本篇源于Lotus Notes企业高级开发这本书中的内容,感觉比较陌生的东西记录了下来。没有具体的解决办法与技巧,全是凭感觉记录下来比较杂乱的知识点了。
1.判断隐藏:!@Contains(@UserRoles;"[R_FileEditor]"|(RuleState!="编辑中"))
2.NOTES ID 和UNID的区别
Notes ID 副本文档彼此间具有不同的Notes ID---8个字符
Universal ID(UNID)不同数据库中互为副本的文档具有相同的Univeral ID--32个字符
3.打开doc服务器上的数据库names.snf,并切换到People视图
@command([FileOpenDatabase];"Doc":"NAMES.NSF";"People")
4.title:=@DbColunm("";"doc":"catalog.nsf";"Database by_Replica ID";4)-----------@DbColumn
5.@Prompt([OKCANCELLIST];"Open Database";"Select a database";"";list);
如题,关于附件上传的大小,Lotus有没有具体的规定。公司给客户开发的系统,上传附件时,附件的大小20-30MB,就发不出去;有的客户系统就可以发送出去。请问是什么原因?
在服务器上有个地方设置,是关于最大POST数据大小的,修改成为0就可以了,有两个设置,一个url地址,一个是http的数据包,在服务器文档的,Domino 引擎那里,很容易找到的
在设置文档中(Configuration)
Router/SMTP -> Restrictions and Controls -> Restriction -> Maximum Message Size
设置最大邮件容量,然后重新启动路由或重新启动Domino Server就可以了。
@Prompt([YESNO];"rsvp";"dO YOU WANT TO ATTEND?")
@MailSend(@Usename;"";"";"RSVP";"";rsvp;"")
For j=1 To dc.Count
set doc = dc.GetNthDocument(j)
...
next
@Command([openview];view)
@If(@IsNewDoc;"Open New Discussion";"Main Topic")
T:=@Weekday(@Now);
@if(T=2;"Monday";T=3;"Tuesday";...)
@UpperCase(@RightBack(@Left(@UserNames;"/");" "))
@Trim(@ProperCase(Subject))
@If(Cost<100;@Success;@Failure("Cost must be less than $100"))
%include "***.lss" --放置在一个对象的Declarations事件中。
Notes不提供%If指令
使用OLE----在OS/2。UNIX和Macintosh中不支持OLE特性。
外部程序可以使用CreateObject和GetObject函数中的这些对象创建和引用NotesUIWorkspace和NotesSession对象
set Session = CreateObject("Notes.NotesSession")
Evaluate语句: returnValue=Evaluate(notesFormula[,notesObject])
使用Bind Command,Execute,InputBox,MessageBox,Print,SendKeys,Use,UseLSX
UseLSX语句被Notes支持,加载一个共享库。一旦.lsx文件被加载,在Notes类浏览器中便可浏览它的类。
REM view becomes a NotesView object
Forall view In db.views
messagebox ""
End Forall
NotesDbDirectory 目录
dbdir.GetFirstDatabase(DATABASE,TEMPLATE,REPLICA_CANDIDATE,TEMPLATE_CANDIDATE)
call db.Open("",Inputbox("File name?"))
call dbACLEntry.Remove
call dbACL.save
call view.refresh------------刷新视图
documentcollection的相关属性和成员函数:
Count属性和GetNthDocument成员函数,可以用来在For循环中取从1到Count的文档
GetFirstDocument和GetNextDocument,可以用力在While循环中取得第一个和下一个文档。直到下一个文档为Nothing
GetLashtDocument和GetPrevDocument,可以用来在While循环中取得最后一个和上一个文档。直到上一个文档为Nothing
NotesDocumentCollection中的UpdateAll函数和NotesSession中的UpdateProcessedDoc函数。
FTSearch,UnprocessedFTSearch-----字符串 Search,UnprocessedSearch------Notes公式。
UpdateFTIndex用来创建或者更新全文索引。IsFTIndexed属性检测索引是否存在。
文档的NoteID和UniversalID属性
可以通过NotesDatabase中的GetDocumentByID和GetDocumentByUNID成员函数来查找。
答复文档:GetNextSibling和GetPrevSibling成员函数可以从当前文档跳过不在同一答复层次上的其他
文档
MakeResponse使一个文档成为另一个文档的答复。
文件夹:NotesDocumentCollection中的PutAllInFolder和NotesDocument中的PutInFolder函数
set uidoc=workspace.CurrentDocument
set doc=uidoc.Document
创建:set doc = New NotesDocument(db)
删除:call doc.Remove(True)------true时允许删除,false时有条件的删除。(有用户修改,则不能删除)
dc.RemoveAll(true)
复制:call doc.CopyToDatabase(db)
邮件加密:发送之前设置document的EncryptOnSend属性为True。不要使用Encrypt函数。
call item.CopyItemToDocument(doc,"ItemName")
NotesItem对象的数组:Items属性
Forall item In doc.Items
Messagebox item.Name &"="& item.Text
End Forall
doc.getitemValue("Itemname")
doc.HasItem(itemname)
IsSummary属性(true--可在视图中显示;false--不能显示)
创建条目:Notesitem类的New函数 set item=new notesItem(doc,"itemname",itemvalue)
NotesDocument类中的AppendItemValue函数
doc.AppendItem(Itemname,Itemvalue)
复制:CopyItemToDocument CopyAllItems CopyItem
删除:Item类的Remove和Document中的RemoveItem。
RTF文本条目:
GetFormattedText以格式化文本的形式返回RTF条目的值。
AppendText,Appendstyle,AppendRTItem,AppendDocLink,AddTab,AddNewLine。
EmbeddedObjects属性,GetEmbeddedObject,EmbedObject
Select Case ***
Case *** : ...
Case *** : ...
End Select
使用环境变量:
GetEnvironmentValue,GetEnvironmentString,SetEnvironmentVar保存ini文件或者Preferencess文件中
ODBC连接外部数据库:
1.连接数据源:
ODBCCollection,ODBCQuery和ODBCResultSet类统称为LotusScriptDataObject(LS:DO)
必须把以下语句放在Global对象的Options事件中或访问ODBC类的代理中。
UseLSX"*LSXODBC"
使用DimNew或Set = New创建新的ODBCConnection对象。
GetLSDOMasterRevision属性得到软件修订版本字符串
ListDataSources成员函数激活数据源
使用ODBCConnection中的ConnectTo成员函数连接到外部数据源
这个外部数据源定义在操作系统级的ODBC Driver Manager中。
使用IsConnected成员函数来测试这个连接
如果需要用户名和密码,可以添加到ConnectTo的参数中。
连接之后,使用ODBCQuery和ODBCResultSet类查询和更新外部表。
使用DataSourceName属性获得数据源名称
使用ListTables成员函数获得数据源的表名称
使用ListFields成员函数获得表中域或者列的名称
使用ListProcedures成员函数获得数据源存储的过程名称
使用IsSupported成员函数获得数据源选项的状态
完成一个连接的数据源时,使用Disconnect成员函数来中断与它的连接。
For n% = Lbound() To Ubound()
//循环一个数组序列
Next
2.查询表:
需要ODBCConnection,ODBCQuery和ODBCResultSet对象
必须通过设置ODBCQuery中的Connectin属性和ODBCResultSet中的Query属性来显示关联对象
queryObject.Connection = connectionObject 将连接和查询关联
resultSetObject.Query = queryObject将结果集和查询关联。
ODBCResultSet中的Execute函数执行查询并提取选中的数据。
设置ODBCQuery中的QueryExecuteTimeOut属性来限制查询的尝试时间。
访问有效的结果集,使用ODBCResultSet对象
不在需要结果集时,使用ODBCResultSet中的Close成员函数将它关闭。
参数:SetParameter成员函数指定一个值,给出参数的名称或编号以及值。
参数中必须包含在单引号里时,在SetParameter中使用,而不是在SQL语句中用。
GetParameter取得参数的当前值,
GetParametername取得参数名称,NumParameters返回参数数目。
基本架构:
Uselsx "*LSXODBC"
Sub Initialize
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
If Not con.ConnectTo("ATDB") Then
****
Exit Sub
End If
Set qry.Connection = con
Set result.Query = qry
Set qry.SQL = "Select ****** "
result.Execute //执行
If Result.IsResultSetAvailable Then
Do
result.NextRow
***
Loop Until result.IsEndOfData
result.Close(DB_CLOSE)
Else
Messagebox "****"
Exit Sub
End If
Messagebox "***"
con.Disconnect
End Sub
For i = 1 To result.NumParameters
inputParameter = Inputbox$(result.GetParameterName(i), "Parameter " & i)
Call result.SetParameter(i, "'" & inputParameter & "'")
Next
result.Execute
3.检查结果集:
结果集包含域(列)和行
访问所有的域:
For n = 1 To resultSetObject.NumColumns
域信息:FieldID,FieldInfo,FieldName,Heldsize
访问所有的行:
result.Execute
Do
result.NextRow
******
Loop Until result.IsEndOfData
行:IsEndOfData,IsBeginOfData,NextRow,PrevRow,LastRow和LocateRow,CurrentRow。
LocateRow可以定位在包含指定域值的第一行,最多可以指定3个域。
定位,更新,删除的时候比较有用。
result.FirstRow
Do While result.LocateRow(5,"value",6,"value")
code for processing row
if result.IsEndOfData row
result.NextRow
Loop
取值:GetValue(名称或者编号)
lastName = result.GetValue("LASTNAME") lastName = result.GetValue(2)
IsValueNull检查空值
GetValue第二个参数的数据类型指定了该成员函数的返回值的数据类型。
如果没有指定第二个参数,可以在GetValue之前使用FieldExpectedDataType指定数据类型
表(SQL数据类型--LS:DO数据类型--类型名称)
4.更新表:
修改,删除和添加行。
阻止更新---将ODBCResultSet的ReadOnly属性设置为True
修改行中的值:
先SetValue,再UpdateRow使之对外部数据表中的修改生效。
Call result.SetValue (1, columnValue)
...
Call result.UpdateRow
删除和添加行---添加的行不会反映在结果集中,需要重新查询:
Call result.DeleteRow(tableName)
Call result.UpdateRow
Call result.AddRow
Call result.SetValue(1, column1Value)
...
Call result.UpdateRow
创建表:
执行一个包含CREATETABLE语句的SQL查询
关闭结果集
执行一个包含SQLSELECT语句的查询来设置列信息
使用AddRow和UpdateRow来处理新表
删除表:
执行一个包含DROPTABLE语句的SQL查询
获取更新状态:
IsValueAltered,GetRowStatus,HasRowChanged
个人感觉用不上
处理ODBC错误:
GetError,GetErrorMessage,GetExtendedErrorMessage。
If con.GetError DBstsSUCCESS Then
Messagebox con.GetExtendedErrorMessage, ,con.GetError&" " &con.GetErrorMessage
End If
con,qry,result三种类似。
处理ODBC事件:
事件:BeforeConnectTo,AfterConnectTo,BeforeNextRow,AfternextRow.
On Event AfterNextRow From result Call AfterPositionChange
Sub AfterPositionChange(res As ODBCResultSet)
***
End Sub
处理运行时错误:
Sub Initialize
On Error Goto processError
....
Exit sub
processError:
Messagebox "Error" & Err() & ": " & Error()
Exit sub
End Sub
Visual Basic中使用Notes类:
Notes 必须与Visuls.Basic程序安装在同一台计算机上。将所有的Notes对象的引用变量声明为Object类型。当使用完一个Notes对象时,将引用变量设置为Nothing来释放它使用的内存。
private Sub Commandl_Click()
Dim session As Object
Dim db As Object
Dim doc As Object
Set session = CreateObject("Notes,NotesSession")
Set db = session.GetDatabase("","test4.nsf")
Set doc = db.CreateDocument()
doc.Form = "Main"
doc.Subject = " "
Call doc.Save(True,False)
End Sub
Private Sub Command2_Click()
Set doc = Noting
Set db = Nothing
Set session = Nothing
Unload Form1
End Sub
JSP标签库:
domtags.tld---访问Domino数据仓库中的标准后台对象的协作标签。
domutil.tld---工具标签,用于执行和所有J2EE Web容器相同的任务。