LotusScript 代理的基本用法
- 格式:pdf
- 大小:226.60 KB
- 文档页数:3
使用LotusScript获取多值域的值原理:文档中的域值是数组形式的。
多值域的值类似于一行多列的数组,下标从0开始。
假定域名为Employee,类型为多值文本域,文档中此域的值为:james,robin,alfred。
计划使用LS的得到返回值为:jamesrobinalfred。
方法1、直接获取strEmployee = doc.Employee(0) +doc.Employee(1) +doc.Employee(2)方法2、使用Evaluate声明Dim strEmployee AsVariantConst NotesMacro$ = "@Implode(Employee)"strEmployee = Evaluate(NotesMacro$,doc)MsgBoxCStr(strEmployee(0))方法3、使用GetItemValue方法Dim tname AsVarianttname = backdoc.GetItemValue("TComm3Name")MsgBox tnameForAll o In tnameMsgBoxCStr(o)EndForAll方法4、转化为数组处理Dim i,j AsIntegeri = 0arrEmployee = doc.GetItemValue("Employee ")For j=LBound(arrEmployee) ToUBound(arrEmployee)MsgBoxCStr(arrEmployee(i))i=i+1Next------------------例子--------------Dim WebStartDb As NotesDatabase '系统启动数据库Dim LinkDoc As NotesDocument '系统启动库中的链结文档Set WebStartDb=s.Getdatabase("", "weboa\woastart.nsf")Set LinkDoc = WebStartDb.GetDocumentByUNID(backdoc.DocID(0)) '根据链结文档ID从系统启动库中取链结文档IfNot LinkDoc IsNothingThenDim arrEmployee AsVariantDim strTComm3Name AsStringDim z,j AsIntegerz = 0strTComm3Name=""arrEmployee = backdoc.GetItemValue("TComm3Name")For j=LBound(arrEmployee) ToUBound(arrEmployee)'MsgBox "111:" & CStr(arrEmployee(z))strTComm3Name= strTComm3Name + CStr(arrEmployee(z))+";"z=z+1Next'MsgBox "strTComm3Name:" & strTComm3NameEndIfLinkDoc.IsTCommm=strTComm3NameCall LinkDoc.Save(True,True)。
LotusScript 代理的基本用法1、FTSearch搜索:Set dc=db.Ftsearch("name",0)'0位置为最大的查询数,0为所有匹配的文件FTSearch必须创建数据库索引Set doc=dc.Getfirstdocument()、2、Item:Set doc=dc.Getfirstdocument()While Not doc Is NothingForAll ritem In doc.ItemsMsgBox End ForAllWend3、取出特定的域Set doc=view.getFirstdocument()If doc.HashItem("yu") <> "" ThenSet item=doc.getfirstitem("yu")Set doc=view.getNextdocument(doc)End If4、使用文本属性If doc.Hashitem("yu") <> "" ThenSet doc=dc.Getfirstdocument()While Not doc Is NothingForAll itemValue In doc.yuitemValue = "Anonymous"End ForAllSet doc=dc.Getnextdocument(doc)WendEnd If5、获取域值:ForAll itemValue In doc.Getitemvalue("yu")6、添加域set item =new NotesItem(doc,"newYu",erName)Call doc.Appenditemvalue("newYu",Newvalue)7、替换值:1)、While Not doc Is NothingCall doc.Replaceitemvalue("resName","newValue")Set doc=dc.getnextdocument(doc)Wend2)、Set doc=dc.Getfirstdocument()While Not doc Is Nothing'Call doc.Replaceitemvalue("resName","newValue")Set item =doc.Getfirstitem("yu")While Not item Is NothingForAll resitems In doc.Itemsv(0)resitems="newVlaue"End ForAll= doc.Itemsv(0)Set item =doc.getnextitem(item)WendSet doc=dc.getnextdocument(doc)Wend8、拷贝域Set item =doc.Getitemvalue("name")call item.Copyitemtodocument(doc, "name")call doc.save(true,false)Call doc1.Copyallitems(doc2,true) ‘替换所有的9、删除指定的域:1)、For j=1 To dc.countSet item=doc.Getitemvalue("name")While Not item Is NothingCall item.Remove()Call doc.Save(true,false)WendSet doc=dc.Getnthdocument(j)Next2)、For j=1 To dc.countWhile Not doc.Hasitem("name")Call doc.Removeitem("name")Call doc.Save(True,false)WendSet doc=dc.Getnthdocument(j)Next10、RTF文本域的输出:Set item=doc.GetFirstItem("RtfYU")MsgBox item.Text11、在代理中使用公式:temp=Evaluate("@ReplaceSubstring(aa;bb;cc)",doc) 12、嵌入对象:ForAll csx In doc.EmbeddedobjectsEnd ForAllSet doc=dc.Getnthdocument(j)Next13、激活嵌入对象:Call doc.EmbeddedObjects(0).Activate(True)14、if的用法Set doc=dc.Getfirstdocument() If Not IsEmpty(db.Agents) Then ForAll agent In db.Agents MsgBox End ForAllEnd If。
LotusScript 语言的基本知识一、概述LotusScript 是一种和Basic相兼容的面向对象的Scripting 环境,它具有强大的能够从事面向对象应用软件开发的语言范围,能够提供循环和分支的能力、数组以及访问Notes对象的能力。
判断Notes中什么时候使用LotusScript 或公式语言1)任何时候当执行该任务的函数或命令存在时,使用公式。
2)对于复杂的程序控制或循环,使用LotusScript 。
3)存取或操作储存的文档数据要使用LotusScript ,特别对于跨文档、跨数据库的存取。
4)若公式语言不能办到,则使用LotusScript在Notes应用程序中访问和操作对象需要三步进行:1.声明对象变量DIMDIM db As NotesDatabase2.实例化一个类将其赋值给对象变量SET db=New NotesDatabase( "Domestic" ,"Sales. nsf')3 •使用这个对象的方法或属性db.created '用来展现创建数据库时的日期和时间、NotesScript 中的数据元素NotesScript 中的常量Null ' 特殊值,代表数据遗失或空Empty ' 相当于"",也就是空串Noth ing ' 涉及变量的初始值,表示对象变量没有内容PI ' 圆周率True/False ' 分别为数值1和0数据类型Integer(整型)Long(长整型)Single(单精度型)Double(双精度型)Currency(货币型)String(字符串)运算符+ - * / <><> = Not And OR &常量和变量Dim address As String '定义变量address = "100 Ma in Street "'变量赋值Co nst address = "100 Mai n Street"'创建字符常量address通信输入和输出Dim response as Integerresponse = Inputbox( "Do you want to continue")'弹岀输入框输入Messagebox(respo nse) '弹岀输岀窗口输岀数据注释1 •单行注释:用Rem或'号2.多行注释:用%Ren和%EndRem% Rem '多行注释实例The first statement in this Script declares a variable myName.The second assi gn the value "Robert" to myName.The third statement display the value of myName. % End Rem数据类型转换Asc(String) 函数’将字符串转化为 ANSI 字符代码 CDate(Strin*) 函数'将字符串转化为日期型CBool(expressi on) 函数'将表达式转化为布尔型 CByte(expressi on) 函数'将表达式转化为字节型CCur(expressio n)函数'将表达式转化为货币型**bl(expressi on)函数’将表达式转化为双精度型 Chr (Integer) 函数'返回整数 AscII 码对象的字符,例如65表示AClnt (expression) 函数’将表达式转化为整型 CLn g(expressi on) CSn g(expressi on)CStr (expression)函数'将表达式转化为长整型 函数'将表达式转化为单精度型 函数'将表达式转化为字符串Hex (number) 函数'返回十六进制 Oct(number) 函数'返回八进制三、数组管理Dim MyDays(7) DimMyDay(1 to ReDim MyDay(1 UBou nd(MyDay,1) LBou nd(MyDay) LBou nd(MyDay,2)as String'声明一个数组一共7个元素,下标为0〜67) as String '声明一个数组下标为to 3)'重新设置数组的边界和维数,这里ReDim 用于定义动态数组'返回数组的上界,1表示若是多维数组,返回第一维的上界 '返回数组的下界'返回数组第2维的下界MyDay(1) = "Su nday"'给数组元素赋值四、语句1、IF ... End ifif balanee > 100 thenin terest = 0.35elsein terest = 0en dif2、Select caseSelectcase thisMo nthcase 1Resp onse = "Ja nuary"case 2 to 10 '也可以写成case 10,20,30 或caseis > 10 response = "Other" caseelseMessageBox(thisMo nth &"is in valid value")en dSelect3、Do...loops 禾口while... wendDowhile / until 条件'语句组loopDo'语句组loopwhile / until 条件while条件'语句组wend4、For...NextFor i = 1 to 5MyDays(i) = InputBox( "Enter your work days:")Next i5、ForAllForAll m in db.managers '循环显示数组db.managers 中的元素MessageBox(m)End ForAll[JavaScript]将Excel文件中的数据导入到表单2009-03-24 17:50:31标签:导入Excel休闲职场JavaScript版权声明:原创作品,如需转载,请与作者联系。
proxy-cheap使用教程Proxy-Cheap是一个提供HTTP/HTTPS和SOCKS5代理服务的网站。
它提供了一个易于使用的平台,使用户能够轻松获取和管理代理服务器。
本教程将向您展示如何使用Proxy-Cheap来获得代理和配置您的浏览器以使用这些代理。
步骤1:创建Proxy-Cheap账户步骤2:购买代理在Proxy-Cheap的仪表板上,选择合适的套餐。
Proxy-Cheap提供不同的套餐,以满足不同用户的需求。
选择你喜欢的套餐,点击“Buy”按钮,并按照界面上的指示完成购买。
步骤3:获取代理购买成功后,您将返回到Proxy-Cheap的仪表板。
在仪表板上,您可以找到您购买的代理服务器的列表,其中包括服务器的IP地址、端口号和验证凭证。
您可以根据自己的需求选择适合您的代理服务器。
步骤4:配置代理现在,您可以将代理配置在您的浏览器中,以便您可以通过代理服务器浏览Internet。
以下是如何在不同浏览器中配置代理的步骤:- Google Chrome:1. 在Chrome中,点击右上角的菜单按钮,并选择“Settings”。
2. 在设置页面中,滚动到底部并点击“Advanced”。
3. 在“System”部分,点击“Open proxy settings”。
4. 在Internet属性对话框的连接选项卡中,点击“LAN设置”。
5. 在局域网(LAN)设置窗口中,选中“使用代理服务器”复选框,并输入您在Proxy-Cheap仪表板中获得的代理服务器的IP地址和端口号。
6.点击“确定”保存您的更改,并关闭所有打开的窗口。
- Mozilla Firefox:1. 在Firefox中,点击右上角的菜单按钮,并选择“Options”。
2. 在选项页面中,选择“General”选项卡。
3. 在网络设置部分,点击“Settings”按钮。
4. 在连接设置窗口中,选择“手动代理配置”选项,并输入您在Proxy-Cheap仪表板中获得的代理服务器的IP地址和端口号。
数据导出-Domino浏览器端(网页端)数据导出实现简介:本文介绍了两种导出domino数据的实现方法,一种使用代理,一种使用XPage。
一、使用代理导出数据导出代理使用LotusScript实现,基本原理涉及输出信息到网页,设置网页内容类型:1、print()方法可输出信息到网页2、设置输出HTML页面类型 为附件 “Content-Disposition:Attachment;”参考代码:%REMSub exportDataBSDescription: 数据导出,参数为导出的数据%END REMSub exportDataBS(dataTable As String)Dim attSetting As StringDim htmlHeader As String'Generate HTML PageattSetting="Content-Disposition:Attachment; filename=" & Format(Now,"YYYYMM DDHHMM") & ".xls" & Chr$(13)htmlHeader=|<html><head><meta content="text/html; charset=GB2312" http-equiv="Content-Type"/>| & Chr$(13) & _|<style type="text/css">body {background-color:transparent;font-family: Arial;}table {font-size:12;border: 1px black solid;border-collapse:collapse;}th,td {border: 1px black solid;}</style>| & _|</head><body>|Print attSetting & htmlHeader & dataTable & |</body></html>|End Sub3、通过对请求页面可获取GET和POST类型参数值参考代码:Set context=s.DocumentcontextREQUEST_CONTENT=context.Getitemvalue("REQUEST_CONTENT")(0) 'POST参数 Query_String_Decoded=context.Getitemvalue("Query_String_Decoded")(0) 'URL参数 '<<<<<<Get dataIf REQUEST_CONTENT<>"" Then'Export selected documentids=Trim(StrToken(REQUEST_CONTENT,"ids=",2))If ids<>"" ThenaryIDs=Split(ids,".")ForAll Noteid In aryIDsSet request=db.Getdocumentbyid(Noteid)If Not request Is Nothing ThentbHTML=tbHTML & getDocInfoHTML(request)ElsetbHTML=tbHTML & "<tr><td>" & Noteid & "</td><td>" & "File not fo und" & "</td></tr>"End If ' get request doc objectEnd ForAll 'loop note idsEnd IfElseIf Query_String_Decoded<>"" Then'Export as conditiondtType=GetParameter("type",Query_String_Decoded)startDate =GetParameter("start",Query_String_Decoded)endDate = GetParameter("end",Query_String_Decoded)matType=GetParameter("matType",Query_String_Decoded)'导出处理代码...ElsePrint "未获取到导出参数!"GoTo endSubEnd If其他辅助函数:* 获取URL参数Function GetParameter(strParamName As String, strQuery As String) As StringDim i As IntegerDim s As StringDim v As VariantGetParameter = ""i = InStr(UCase(strQuery),"&" & UCase(strParamName) & "=")If i <> 0 Thens = StrRight(Mid(strQuery, i),"=")If InStr(s, "&") Thens = StrLeft(s, "&")End Ifv = Evaluate("@UrlDecode(""Domino""; """ & s & """)")GetParameter = CStr(v(0))End IfEnd Function* 特殊字符转换Function PCDATA(ByVal phrase$) As String%REM当需要输出HTML格式文本时,可使用此函数将输出字符中的特殊字符转换为&#unicode格式%END REMOn Error GoTo errorHandlerDim begin%, found%, oldPhrase$If phrase$="" Then GoTo endSuboldPhrase= phraseDim a As LongDim ch As Stringphrase$=""For a=1 To Len(oldphrase)ch=Mid$(oldphrase,a,1)If Uni(ch)=32 Or Uni(ch)>47 And Uni(ch)<58 Or _ '0-9Uni(ch)>64 And Uni(ch)<91 Or _ 'A-ZUni(ch)>96 And Uni(ch)<123 Then 'a-zphrase$=phrase$ & chElsephrase$=phrase$ & "&#" & Uni(ch) & ";"End IfNextPCDATA = phraseendSub:Exit FunctionerrorHandler:PCDATA = oldPhraseResume endSubEnd Function二、通过设置XPage返回信息来导出数据设置导出功能的XPage,需设置Xpage的"rendered"属性为false,并在XPage的“afterRenderResponse()”事件中编写导出数据代码,使用SSJS编写,可以导出特殊字符(不用做处理),基本要点是:* 设置输出页面类型var exCon:javax.faces.context.ExternalContext = facesContext.getExternalContext();var writer:javax.faces.context.ResponseWriter = facesContext.getResponseWriter();var response:javax.servlet.http.HttpServletResponse = exCon.getResponse();response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Cache-Control", "no-cache");response.setHeader("Content-Disposition","attachment; filename=\"export.xls\"");* 设置输出页面及样式writer.write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/></head>"); writer.write("<body style=\"background-color:transparent;font-family: Arial\">");.....writer.write("</body></html>");writer.endDocument();* 实现代码参考(输出指定视图内容)function getSerialTimeNo():string{var nt:Date=@Now();var y=@Year(nt);var mon=@Month(nt);var d=@Day(nt);var h=@Hour(nt);var m=@Minute(nt);var s=@Second(nt);var day=y+(@Length(mon)==1?"0":"")+mon+(@Length(d)==1?"0":"")+d;var time=(@Length(h)==1?"0":"")+h+(@Length(m)==1?"0":"")+m+(@Length(s)==1?"0":"")+s;return day+time;}function export2Excel(){try {//javax.faces.context.FacesContextvar exCon:javax.faces.context.ExternalContext = facesContext.getExternalContext();var writer:javax.faces.context.ResponseWriter = facesContext.getResponseWriter();var response:javax.servlet.http.HttpServletResponse = exCon.getResponse();response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Cache-Control", "no-cache");response.setHeader("Content-Disposition","attachment; filename=\"export"+getSerialTimeNo()+".xls\"");writer.write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/></hea d>");writer.write("<body style=\"background-color:transparent;font-family: Arial\">");try{//////////////////////////输出代码开始///////////////////////////////页面参数传递var condition=sessionScope.parts;sessionScope.parts=null;var vw:NotesView = null;var vc:NotesViewEntryCollection = null;var ve:NotesViewEntry = null;var veTmp:NotesViewEntry = null;vw = database.getView("Request");vc = vw.getAllEntries();if(vc.getCount()>0){//输出表格及表格标题writer.write("<table border=\"1px black solid\">");writer.write("<tr>");var columns=vw.getColumnNames();for(j = 0 ; j < vw.getColumnCount() ; j++){writer.write("<th>" + columns[j] + "</th>");}writer.write("</tr>");//输出表格行:视图数据ve = vc.getFirstEntry();while (ve) {v = ve.getColumnValues();//条件判断if(condition==null || condition==v.elementAt(0)){writer.write("<tr>");for (i = 0; i < v.size(); i++) {writer.write("<td>"+v.elementAt(i).toString()+"</td>");}}veTmp = vc.getNextEntry(ve);ve.recycle();ve= veTmp;}writer.write("</table>");}else{//没有数据writer.write("No Data");}//////////////////////////输出代码结束/////////////////////////////}catch(e){writer.write("ERROR: "+e.toString());}writer.write("</body></html>");writer.endDocument();} catch (e) {print("sysExportToExcel: "+e);}}Use the context global variable to get an XSPContext object representing the current context.。
Office 文档集数据库是以嵌入对象的方法嵌入word文档的,该文档在body域中,发送传真时,页眉、页脚发不出来,其他格式能正常发出来.而且可以做到不发传真封面,另外,这种方式也可以避免附件方式那样发出来还会出现一个附件图标,故现在的任务是如何往该文档中写内容了。
往该文档中写内容,有两种方式:一种是用VB写一个DLL,有关word文档的操作,包括插入一个表格、插入一个字符串、插页眉等等。
这些函数都放在Dll中,然后被lotus script调用。
另一种方式是用lotusscript 直接操纵该嵌入文档,但操纵嵌入文档的lotusscript语法与VB语法差异很大。
所能获得的例子代码和帮助都是VB语法,只能从lotusscript提取的ole对象库中去察看个函数的语法,至于个函数中的参数的意义只能从msdn中获得,而msdn中对参数的讲解也不是很详细,所有VB常量在lotusscript中没有定义,只能半猜半试的直接使用数值。
下面的例子是lotus script 操纵word文档:'获取嵌入文档的句丙Set thisdoc = source.getobject("oleobject"'设置该文档的页面设置的左边距为20个单位(象素)With thisdoc.pagesetup.leftmargin = 20End With'插入页眉(由于真正的页眉在传真时无法显示,这里的页眉是模拟的)'插入一幅图Set thispicture = thisdoc.shapes.Addpicture("d:\学习\cassiatb.jpg"'设置文字的插入点thisrangeSet thisrange = thisdoc.range(1,1)pageheadstring = "CAISSA Touristic GmbH" & Chr(10) & "HAMBURG·BEIJING·SHANGHAI·BARCELONA" & Chr(10) &Chr(10) & Chr(10)'插入一段文字:pageheadstringthisrange.insertbefore (pageheadstring)'获取一段文字:从字符1到24Set thisrange = thisdoc.range(1,24)'设置该段文字的属性:With thisrange.bold = True '加粗.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter 行居中.font.size = 20 '字体大小为20End WithSet thisrange = thisdoc.range(25,59)With thisrange.bold = True.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter.font.size = 16End With'thispicture.wrapformat.side = wdwrapright'设置图像属性With thispicture.wrapformat '环绕方式.type = wdwrappicture '类型为picture.side = wdwrapright '文字右环绕End With。
第10章在Web中使用LotusScript第10章在Web中使用LotusScript (1)10.1 使用LotusScript的Web代理 (1)10.2 激活一个代理的URL (2)10.3 编写WebQueryOpen代理 (3)10.4 编写WebQuerySave代理 (6)10.5 在代理中使用CGI变量 (7)10.5.1 删除文档 (8)10.6 在Web工作流中使用LotusScript (11)本章主要说明在Domino的Web开发中使用LotusScript的方法,关于LotusScript的程序设计知识请参考第三章和IBM 公司提供的帮助文档。
10.1 使用LotusScript的Web代理LotusScript在Web上的唯一使用方法就是编写代理,完成比较复杂的程序逻辑,或者是只有通过操作Domino后端对象才能完成的功能。
在Web上运行一个LotusScript代理有两种方法:●使用@URLOpen调用它的URL,例如,http://server/db/agentname?OpenAgent●使用公式ToolsRunMacro和RunAgent调用代理。
当使用ToolsRunMacro调用代理时,有两种特殊的应用场合,即在文档的WebQueryOpen和WebQuerySave事件中调用代理。
当你在Web上运行一个LotusScript代理时,代理可以访问由浏览器和Domino提供的信息,即CGI 变量,如果使用第二种方式运行代理,还可以访问当前文档中的域的值,这些信息都包含在NotesSession 中的DocumentContext属性中。
DocumentContext属性是一个特别的N o t e s D o c u m e n t对象,它包含了关于当前环境的信息。
这个文档内容类似于N o t e s U I D o c u m e n t对象,你可以使用它在表单保存前从表单中得到值。
在notes编程中,尤其web开发中,代理是很常用的,但是,相对而言,代理的调试也很不方便。
下面就我的经验,列出几种常用的方法,欢迎大家指正和补充。
(这里讨论的都是lotussript代理)1.notes端跟踪法使用notes开发客户端时,对于那些在客户端运行的代理(与服务器端运行相对)可以直接跟踪代理的运行。
方法:选中菜单中“文件-〉工具-〉调试lotusscript”后再运行代理即可。
优点:调试直观,代理可以单步跟踪、设置断点(使用stop语句或者在调试窗口中双击需要加断点的语句)、观察该中断时刻的各种变量和对象的值等。
所以使用这种调试方法可以很快地知道问题的所在。
缺点:只适用于客户端运行的代理,而且有些web客户端运行的代理也无法调试。
一些调试技巧:可以把那些在服务器端运行的代理的核心代码先在客户端调试通过后,再改回服务器端运行,这样有时可以节省很多调试时间。
有些web端运行的代理也可照此方法调试。
2.输出调试信息对于那些在服务器端运行的代理,或在web端运行的代理,可以利用print命令来输出一些关键的信息来帮助你了解问题的所在。
方法:在代理中怀疑有问题的地方或分支点附近加入print命令来打印一些关键信息,从而帮助了解问题的所在。
a.对于处于非调试状态下的notes客户端而言,print的信息将显示在客户端下部的状态条中。
b.对于处于调试状态下的notes客户端而言,print的信息将显示在客户端下部的状态条中和调试窗口的输出窗口中。
c.对于web应用而言,print的信息将直接输出到浏览器中。
(但请注意,位于表单的webqueryopen 代理中的print输出都将被忽略)d.对于服务器端运行的代理,print的信息将保存在NOTES.LOG文件中附带说一句,当代理产生错误时,一般都会在domino的命令窗口中产生一个错误信息,说明错误的类型,可能的话,先看看这些信息,了解一下错误的类型,可能会比一上来就盲目地跟踪要好一些。
综合使用JavaScript、LotusScript Agent和Formula的技巧综合使用JavaScript、LotusScript Agent和Formula的技巧一概述在使用Designer开发B/S模式的应用时,JavaScript、LotusScript和Formula是我们主要用到的三种开发语言。
它们在各自的位置都有着很强劲的优势。
1.JavaScript因为只能取得浏览器端的数据,不能访问Notes DOM;所以,主要用在浏览器端的数据验证、信息提示等对当前Brows窗口操作易的用性功能。
2.LotusScript能访问Notes DOM。
在Notes客户端可以取得当前文档的数据,但是,因为其无法直接在浏览器端工作;所以在B/S模式的应用中LotusScript只能在服务器端工作,我们通过编写LotusScript 代理来实现其强大的文档处理能力。
3.Formula能访问后台数据,语言简洁,数据处理能力较弱,不能在浏览器端工作。
Formula主要使用在元素的显示控制以及域值的计算公式及简单的数据处理方面。
这三者使用的范围和处理能力各不相同。
在应用中将其三者综合起来使用,会使应用的各方面功能大大增强。
二由JavaScript向代理(LS\FL)通信一般情况下JavaScript向代理的通信,使用url command。
即如下格式:http://Host/Database/AgentName?OpenAgent&参数。
这类操作可以用来解决数据查询、文档删除等任务。
这类操作的特点是可以带参数,但是取不到浏览器端的当前文档,无法对浏览器端的文档进行处理。
那么,为什么要使用JavaScript向代理通信,并让代理取得浏览器端的当前文档呢?先看一个例子:在某申请系统中,用户创建新申请可以这样做:打开新的申请单,填写各项目后,点击操作按钮―提交申请‖,就完成了操作。
对设计者而言触发―提交‖操作必定运行一个代理或一段公式(此处我们先假定提交操作运行的是代理,后面将介绍提交操作运行公式的情况)。
linux sock5代理规则
在Linux系统中,使用Socks5代理可以帮助用户在网络上匿名浏览和访问被封锁的网站。
要设置Socks5代理规则,你可以按照以下步骤进行操作:
1. 安装Socks5代理软件,首先需要在Linux系统上安装一个Socks5代理软件,常见的有Shadowsocks、Squid等。
你可以通过包管理器如apt、yum等来安装这些软件。
2. 配置Socks5代理,一旦安装了Socks5代理软件,你需要配置代理服务器的地址和端口。
通常情况下,你可以在代理软件的配置文件中指定代理服务器的地址和端口号。
3. 设置系统代理:在Linux系统中,你可以通过命令行或者图形界面来设置系统代理。
在命令行中,你可以使用export命令来设置代理环境变量,例如:
export all_proxy=socks5://127.0.0.1:1080。
这将会将所有的网络流量都通过Socks5代理服务器进行转
发。
4. 测试代理,在设置完代理之后,你可以通过访问一个被封锁的网站或者使用网络工具如curl、wget等来测试代理是否生效。
5. 启用代理自动化,你也可以通过编写脚本或者使用代理自动化工具来实现根据需要自动切换代理服务器。
需要注意的是,使用Socks5代理需要遵守当地法律法规,不得用于非法用途。
另外,选择合适的代理服务器也是非常重要的,以确保网络安全和稳定性。
希望这些信息能够帮助到你。
LotusScript 及公式的学习1.LotusScript 及公式是Lotus Notes 提供的一个完整的编程接口,是一种与BASIC 兼容的程序设计语言。
可以根据需要在NOTES 的任意对象中附加LotusScript 语句和公式。
LotusScript 是一个完全面向对象的程序设计语言,具有丰富的类,方法和属性,包含有集成的对象浏览器和程序开发环境。
NOTES 公式语言包含一整套的语法规则,提供丰富的命令和函数,可以对常量和变量进行计算,进行简单的逻辑控制。
2.公式基础: ( 1)输入公式的方式(两种) 公式窗口设计窗口( 2)公式语言的语法结构词法元素:公式有一个或多个语句构成,一个语句可以有变量,常量,运算符,函数,关键字等构成如:CTX:=@CreatedCTX 是变量,:= 是运算符,@Created 是一个无参数的函数语句含义:把文档的创建时间赋给变量CTX 如:@Trim(name)@Trim 是函数,参数name 是一个域名语句含义:把name 值的多余空格去掉如:@Promp([OK];" 问候!";" 您好! ")@Promp 是一个带三个参数的函数,参数[OK] 是一个关键字,后面两个是文本常量语句含义:显示一个对话框如:LastName+", "+FirstNameLastName ,FirstName 是一个变量,+ 是一个运算符,", " 是一个常量语句含义:将LastName, —个逗号和空格号,FirstName合并在一起通用语法规则(必须遵循)语句分隔符:使用分号分隔多哥语句如:FIELD txtmap:=txtmc;FIELD txtmc:=@DeleteField 空格:在运算符,标点和值之间可以有任意多个空格,也可以没有,必须有一个来区分关键字,文本常量中的空格也很重要。
LotusS cript是完全面向对象的编程语言。
它通过预定义的类与 Domino接口。
Domino监控用户代码的编译和加载,并且自动包含 Domino的类定义。
访问现有的对象最好使用 LotusS cript,例如:根据其他文档的值来更改一个文档中的值。
LotusS cript提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看note s提供的S cript帮助。
下面是我收集的一些sc ript例子。
一般是比较技巧的程序,要学习一般s cript编写,请下载lot usScr ipt学习库!LotusS cript是完全面向对象的编程语言。
它通过预定义的类与 Domino接口。
Domino监控用户代码的编译和加载,并且自动包含 Domino的类定义。
访问现有的对象最好使用 LotusS cript,例如:根据其他文档的值来更改一个文档中的值。
LotusS cript提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看note s提供的S cript帮助。
下面是我收集的一些sc ript例子。
一般是比较技巧的程序,要学习一般s cript编写,请下载lot usScr ipt学习库!怎样判断视图中没有文档?set doc = vw.getfir stdoc ument()if doc is nothin g thenend if如何将查询结果放到一个文件夹里?下面是将搜索结果放到名叫newfolder的文件夹中,并跳转到该文件夹上Sub Click(Source As Button)Dim docs As notesd ocume ntcol lecti onDim doc As notesd ocume nt...........q=doc.query(0)Set docs = db.ftsear ch(q, 0)Call docs.PutAll InFol der( "newfol der" )Call w.OpenDa tabas e( "","","newfol der")End Sub如何删掉数据库中所有私有视图Dim sessio n As New notess essio nDim db As notesd ataba seDim doc As notesd ocume ntSet db=sessio n.curren tdata baseForall i In db.viewsSet doc=db.getDoc ument ByUNI D(v.univer salID)' 这个地方视图当作文档来处理,以便取到视图的一些属性。
LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!怎样判断视图中没有文档?set doc = vw.getfirstdocument()if doc is nothing thenend if如何将查询结果放到一个文件夹里?下面是将搜索结果放到名叫newfolder的文件夹中,并跳转到该文件夹上Sub Click(Source As Button)Dim docs As notesdocumentcollectionDim doc As notesdocument...........q=doc.query(0)Set docs = db.ftsearch(q, 0)Call docs.PutAllInFolder( "newfolder" )Call w.OpenDatabase( "","","newfolder")End Sub如何删掉数据库中所有私有视图Dim session As New notessessionDim db As notesdatabaseDim doc As notesdocumentSet db=session.currentdatabaseForall i In db.viewsSet doc=db.getDocumentByUNID(v.universalID)' 这个地方视图当作文档来处理,以便取到视图的一些属性。
Option PublicOption DeclareUse "KMBase"Uselsx "*LSXODBC"Use "ODBCConfig"-------------------------------------------Sub InitializeOn Error Goto ErrorHandleDim session As New notessessionCall GetXMLText()Exit SubErrorHandle:Call LogAgentError("",Error,Erl())Exit SubEnd Sub-------------------------------------------------------------------------------Sub GetXMLText()On Error Goto ErrorHandleDim session As New notessessionDim db_current As notesdatabaseDim db_target As notesdatabaseDim doc_current As notesdocument,doc_search As NotesDocument Dim cgi As VariantDim startDate As StringDim endDate As StringDim deptName As StringDim userName As StringDim userId As StringDim categoryId As StringDim sname As StringDim stepname As StringDim subject As StringDim startersno As StringDim serialno As StringDim FieldTitle(7) As StringDim SearchKey As String ,sch As StringDim Key As StringDim i As Integer,j As Integer,k As IntegerDim total As LongDim Category As Variant ,CategoryName As VariantDim path_tmp As New KMPathDim path As String ,filename As String '定义路径,文件名两个字符串变量Dim xls As Variant '定义excel,excel工作簿,工作表三个多值域变量 Dim xlsWorkbook As VariantDim xlsWorkSheet As VariantSet xls=createobject("excel.Application")Set xlsWorkbook=xls.workbooks.addSet xlsWorkSheet=xlsWorkbook.worksheets("sheet1")Dim UserList() As String,UserIDList List As String, amount As Variant'------- 设置显示列-----------FieldTitle(0)="申请单编号"FieldTitle(1)="报销流程"FieldTitle(2)="发起人"FieldTitle(3)="退回人"FieldTitle(4)="流程经过人"FieldTitle(5)="发起时间"FieldTitle(6)="退回时间"FieldTitle(7)="退回意见"Set db_current=session.currentdatabaseSet doc_current=session.documentcontext'---获取CGI变量,如果数字型为空,则设初值cgi=Strright(doc_current.query_string_decoded(0),"&")startDate = GetQueryString(cgi,"sd")endDate = GetQueryString(cgi,"ed")sname= Lcase(GetQueryString(cgi,"sname"))stepname = Lcase(GetQueryString(cgi,"stepname"))subject = Lcase(GetQueryString(cgi,"subject"))startersno = Lcase(GetQueryString(cgi,"sno"))serialno = Lcase(GetQueryString(cgi,"ser"))'执行查询条件Dim DB2Con As New ODBCConnectionDim Db2Qur As New ODBCQueryDim Db2Result As New ODBCResultSetDim cYear As String ,SQL As StringDim TotalAmount As DoubleIf Not DB2Con.ConnectTo(cost_ODBCSource,cost_ODBCUser,cost_ODBCPWS) Then Msgbox "连接错误"Exit SubElseSet Db2Qur.Connection=DB2ConSet Db2Result.Query=Db2QurEnd IfDim SQL1 As StringIf startDate<>"" And endDate<>"" ThenSQL1 =| createtime between '|+startDate+|' and '|+endDate+|'|End IfIf sname<>"" ThenSQL1 = SQL1+| and Lower(workflow)='|+sname+|'|End IfIf stepname<>"" ThenSQL1 = SQL1+| and Lower(stepid)='|+stepname+|'|End IfIf subject<>"" ThenSQL1 = SQL1+| and Lower(subject)='|+subject+|'|End IfIf startersno<>"" ThenSQL1 = SQL1+| and Lower(startemployeesno)='| +startersno+|'|End IfIf serialno<>"" ThenSQL1 = SQL1+| and Lower(serialno)='|+ serialno+|'|End IfSQL=|select * from stepback where |+SQL1Db2Qur.SQL=SQLFor i=0 To Ubound(FieldTitle)xlsWorkSheet.cells(1,i+1)=FieldTitle(i)NextIf Db2Result.Execute ThenstRowtotal=Db2Result.NumRowsFor i=1 To total'费用节点Db2Result.currentRow= iFor j=0 To Ubound(FieldTitle)If j=0 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("SerialNo"))Elseif j=1 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("WORKFLOW"))Elseif j=2 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("STARTEMPLOYEENAME"))Elseif j=3 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("FEEDBACKEMPLOYEENAME")) Elseif j=4 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("THROUGHEMPLOYEENAME")) Elseif j=5 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("CREATETIME"))Elseif j=6 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("FEEDBACKTIME"))Elseif j=7 ThenxlsWorkSheet.cells(i+1,j+1)=Cstr(Db2Result.GetValue("FEEDBACKVIEW"))End IfNextNextEnd IfDb2Result.Close(DB_CLOSE)DB2Con.DisconnectSet Db2Qur=NothingSet Db2Result=NothingDim unique As Stringpath$ = Curdir() + "\data\domino\html\excel\"Unique =fn_getUnique()filename$ = "report_items_"+Unique+".xls"'检查文件是否存在If Not Dir(path$+filename$)="" ThenKill path$+filename$Elsemakedir2(path$+filename$)End IfxlsWorkbook.saveAs path$+filename$,TruexlsWorkbook.close FalseSet xlsWorkbook= NothingSet xls= NothingPrint |[http://|+path_tmp.InternetHost+|/excel/|+filename$+|]|Exit SubErrorHandle:xlsWorkbook.close FalseSet xlsWorkbook= NothingSet xls= NothingMsgbox "sinochem_dsStepBack:" & Error & Erl()Resume NextEnd Sub------------------------------------------------------------------------------------------------------Function MakeDir2(path As String)Dim pathArray() As StringDim n As IntegerDim leftPath As StringDim rightPath As StringDim i As IntegerrightPath = pathleftPath = pathn = 0If Instr(rightPath,"\") > 0 ThenWhile Instr(rightPath,"\") > 0leftPath = Strleft(rightPath,"\")rightPath = Strright(rightPath,"\")Redim Preserve pathArray(n)pathArray(n) = leftPathn = n + 1WendElseRedim Preserve pathArray(n)pathArray(n) = rightPathEnd IfrightPath = ""For i = Lbound(pathArray) To Ubound(pathArray)If i = Lbound(pathArray) ThenrightPath = pathArray(i)Elserightpath = rightpath + "\" + patharray(i) End IfIf Dir$(rightPath,16) = "" ThenMkdir rightPathEnd IfNextEnd Function。
LotusScript 代理的基本用法
1、FTSearch搜索:
Set dc=db.Ftsearch("name",0)
'0位置为最大的查询数,0为所有匹配的文件FTSearch必须创建数据库索引Set doc=dc.Getfirstdocument()、
2、Item:
Set doc=dc.Getfirstdocument()
While Not doc Is Nothing
ForAll ritem In doc.Items
MsgBox
End ForAll
Wend
3、取出特定的域
Set doc=view.getFirstdocument()
If doc.HashItem("yu") <> "" Then
Set item=doc.getfirstitem("yu")
Set doc=view.getNextdocument(doc)
End If
4、使用文本属性
If doc.Hashitem("yu") <> "" Then
Set doc=dc.Getfirstdocument()
While Not doc Is Nothing
ForAll itemValue In doc.yu
itemValue = "Anonymous"
End ForAll
Set doc=dc.Getnextdocument(doc)
Wend
End If
5、获取域值:
ForAll itemValue In doc.Getitemvalue("yu")
6、添加域
set item =new NotesItem(doc,"newYu",erName)
Call doc.Appenditemvalue("newYu",Newvalue)
7、替换值:
1)、While Not doc Is Nothing
Call doc.Replaceitemvalue("resName","newValue")
Set doc=dc.getnextdocument(doc)
Wend
2)、Set doc=dc.Getfirstdocument()
While Not doc Is Nothing
'Call doc.Replaceitemvalue("resName","newValue")
Set item =doc.Getfirstitem("yu")
While Not item Is Nothing
ForAll resitems In doc.Itemsv(0)
resitems="newVlaue"
End ForAll
= doc.Itemsv(0)
Set item =doc.getnextitem(item)
Wend
Set doc=dc.getnextdocument(doc)
Wend
8、拷贝域
Set item =doc.Getitemvalue("name")
call item.Copyitemtodocument(doc, "name")
call doc.save(true,false)
Call doc1.Copyallitems(doc2,true) ‘替换所有的9、删除指定的域:
1)、For j=1 To dc.count
Set item=doc.Getitemvalue("name")
While Not item Is Nothing
Call item.Remove()
Call doc.Save(true,false)
Wend
Set doc=dc.Getnthdocument(j)
Next
2)、For j=1 To dc.count
While Not doc.Hasitem("name")
Call doc.Removeitem("name")
Call doc.Save(True,false)
Wend
Set doc=dc.Getnthdocument(j)
Next
10、RTF文本域的输出:
Set item=doc.GetFirstItem("RtfYU")
MsgBox item.Text
11、在代理中使用公式:
temp=Evaluate("@ReplaceSubstring(aa;bb;cc)",doc) 12、嵌入对象:
ForAll csx In doc.Embeddedobjects
End ForAll
Set doc=dc.Getnthdocument(j)
Next
13、激活嵌入对象:
Call doc.EmbeddedObjects(0).Activate(True)
14、if的用法
Set doc=dc.Getfirstdocument() If Not IsEmpty(db.Agents) Then ForAll agent In db.Agents MsgBox
End ForAll
End If。