Lotus Notes企业高级开发摘要

本篇源于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容器相同的任务。

你可能感兴趣的:(Domino,LotusScript,OA系统综合开发,lotus,文档,database,command,session,数据库)