2010年4月7日

          基于Domino8.5.1創建Web應用程序

          http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Master_Table_of_Contents_for_Building_Domino_Web_Applications_using_Domino_8.5.1

          posted @ 2010-04-19 10:44 明高 閱讀(303) | 評論 (0)編輯 收藏

          Eclipse無插件配置Resin

          http://blog.csdn.net/samboy2002/archive/2006/04/03/648785.aspx

          posted @ 2010-04-19 09:52 明高 閱讀(269) | 評論 (0)編輯 收藏

          Lotus的服務器端編程

          posted @ 2010-04-12 17:09 明高 閱讀(222) | 評論 (0)編輯 收藏

          1

          Teamstudio CIAO! Client Edition  2.50

          Serial No.        AP-24607  License Key        PMSGQ-N4LXB-RTFKVT
          Maintenance Expires  2009/08/31  Number Licenses        1

           

          Teamstudio CIAO! Server Edition  2.40

          Serial No.        AP-24608  License Key        XMSGA-BIAIV-SCI2RX
          Maintenance Expires  2009/08/31  Number Licenses        1


           

          posted @ 2010-04-09 17:34 明高 閱讀(189) | 評論 (0)編輯 收藏

          Tomcat配置與應用.doc

          如何部署Java Web應用程序到Tomcat中?
          第一步配置tomcat
          安裝Tomcat后,在我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量(假定你的tomcat安裝在c:\tomcat):

          CATALINA_HOME=c:\tomcat
          CATALINA_BASE=c:\tomcat

          然后修改環境變量中的classpath,把tomat安裝目錄下的common\lib下的(可以根據實際追加)servlet.jar追加到classpath中去,修改后的classpath如下:

          classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;

          接著可以啟動tomcat,在IE中訪問http://localhost:8080,如果看到tomcat的歡迎頁面的話說明安裝成功了。

          第二步:部署Servlet:
          建立 Servlet
          1.用你最熟悉的編輯器(建議使用有語法檢查的java ide)新建一個servlet程序,文件名為Test.java,文件內容如下:

          package test;
          import java.io.IOException;
          import java.io.PrintWriter;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          public class Test extends HttpServlet {
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
          PrintWriter out=response.getWriter();
          out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
          out.flush();
          }
          }

          2 .編譯
          將Test.java放在c:\test下,使用如下命令編譯:

          C:\Test>javac Test.java

          然后在c:\Test下會產生一個編譯后的servlet文件:Test.class

          3 .將結構test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那個test目錄到classes目錄下,如果classes目錄不存在,就新建一個。 現在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目錄結構

          4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping

          編輯后的web.xml如下所示,紅色為添加的內容:

          <?xml version="1.0" encoding="ISO-8859-1"?>
          <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
          <display-name>My Web Application</display-name>
          <description>
          A application for test.
          </description>
          <servlet>
          <servlet-name>Test</servlet-name>
          <display-name>Test</display-name>
          <description>A test Servlet</description>
          <servlet-class>test.Test</servlet-class>
          </servlet>
          <servlet-mapping>
          <servlet-name>Test</servlet-name>
          <url-pattern>/Test</url-pattern>
          </servlet-mapping>
          </web-app>

          這段話中的servlet這一段聲明了你要調用的Servlet,而servlet-mapping則是將聲明的servlet"映射"到地址/Test上

          5 .好了,重啟動Tomcat,啟動瀏覽器,輸入http://localhost:8080/myapp/Test 如果看到輸出This is a servlet test.就說明編寫的servlet成功了。

          注意:修改了web.xml以及新加了class,都要重啟Tomcat

          參考:
          http://blog.csdn.net/NetMicrobe/archive/2006/04/14/663031.aspx
          http://read.newbooks.com.cn/info/196577.html

          posted @ 2010-04-09 15:50 明高 閱讀(216) | 評論 (0)編輯 收藏

          lotus&dojo

          http://www-10.lotus.com/ldd/ddwiki.nsf/dx/domino85-use-dojo-libraries.htm
          http://ideajam.net/IdeaJam/P/ij.nsf/0/7E146908362FE350862576D500522C65?OpenDocument#
          http://www.training-classes.com/programs/03/16/31617_domino_designer_8-5_browser_applications_and_dojo.php
          https://www.ibm.com/developerworks/cn/web/wa-dojotoolkit/

          posted @ 2010-04-09 15:48 明高 閱讀(199) | 評論 (0)編輯 收藏

          Lotus程序設計優化

          http://www.ibm.com/developerworks/lotus/library/notes7-application-performance2/index.html?S_TACT=105AGX13&S_CMP=EDU

          posted @ 2010-04-09 14:39 明高 閱讀(177) | 評論 (0)編輯 收藏

          Perl操縱數據庫

          #!perl
          use Win32::ODBC;
          $Data = new Win32::ODBC("DSN=dhcp;UID=netman;PWD=netman;");
          $Data2 = new Win32::ODBC("DSN=dhcp;UID=netman;PWD=netman;");
          $Data1 = new Win32::ODBC("DSN=dhcp;UID=netman;PWD=netman;");
          $Data3 = new Win32::ODBC("DSN=dhcp;UID=netman;PWD=netman;");

           


          $Data->Sql("select ip,mac,host from dhcplist");

          while ($Data->FetchRow())
          {
           
           ($ip,$mac,$host) = $Data->Data;
           print $host,"\n";

            
           $Data1->Sql("select * from Employee ");
           
           while ($Data1->FetchRow())
           
           {
           ($cname,$dept,$dno,$id,$ext) = $Data1->Data;

           print "$cname","\n";
           print "$id","\n";
           


           }
           $Data1->Close();

           $flag = '';


           $Data2->Sql("select * from dhcp_data where host = '$host' and ip = '$ip' ");

                  #print "select * from dhcp_data where host = '$host' and ip = '$ip'" ;

           while ($Data2->FetchRow())
                  {
           
           #@flag = $Data2->Data;

           if ( $flag ne "" )
           {
           print "ok"; 
           
           $Data3->sql("update dhcp_data set ip = '$ip',host = '$host',mac ='$mac',cname = '$cname',dept = '$dept',dno = $dno',notesid = '$id',ext = '$ext',modifydate = getdate()"); 
              
           $Data3->Close();
            
           }
           else
           {
                  print "ok2";
           $Data3->sql("insert into dhcp_data(ip,host,mac,cname,dept,dno,notesid,ext,modifydate) values('$ip','$host','$mac','$cname','$dept','$dno','$id','$ext',getdate())"); 
              
           $Data3->Close(); 
           }

          }
           $Data2->Close(); 

           
            
          }  
           
          $Data->Close();


           

          posted @ 2010-04-09 10:02 明高 閱讀(137) | 評論 (0)編輯 收藏

          在Lotus中操縱txt文件

          那怎么用LS創建TXT文件  Superhewei(360700686) 11:03:43 Dim fileNum As Integer, empNumber As Integer, n As Integer  Dim fileName As String, empName As String  fileNum% = Freefile()  fileName$ = "H:\zcjn"+Format(Now,"yyyy-mm-dd")+".trs" ' fileName$ = "c:\zcjn"+Format(Now,"yyyy-mm-dd")+".trs"  Open fileName$ For Output As fileNum% 

          posted @ 2010-04-09 09:33 明高 閱讀(237) | 評論 (0)編輯 收藏

          在Lotus開發中使用ODBC進行數據交互

          Sub Initialize  Dim session As New NotesSession  Dim doc As NotesDocument     '當前文檔的后臺文檔  Dim tobeSearchDb As NotesDatabase   '待搜索的數據庫  Dim DstDocs As NotesDocumentCollection  '搜索結果集  Dim RstDoc As NotesDocument                '查詢到的文檔  Dim sRstView As NotesView                    '結果顯示視圖  Set Db=Session.CurrentDatabase   Set doc=session.DocumentContext    Dim con As ODBCConnection  Dim userName As String  Dim password As String  Dim qry As ODBCQuery  Dim result As ODBCResultSet  Dim A As String    Set con = New ODBCConnection  Set qry = New ODBCQuery  Set result = New ODBCResultSet    Set qry.Connection = con  Set result.Query = qry    A=con.ConnectTo("CoprYW","sa","123")    qry.SQL = " INSERT INTO mt(phone,msg_content,sm_flag)  VALUES ('"+doc.SMSendTo(0)+"','"+doc.SMBody(0)+"','1'); "    'Call JSAction("Alert",Cstr(a))  If Not result.Execute Then   'Messagebox _   'result.GetExtendedErrorMessage,, result.GetErrorMessage      'Exit Sub  End If  result.Close(DB_CLOSE)  con.Disconnect   End Sub

          posted @ 2010-04-09 09:32 明高 閱讀(283) | 評論 (0)編輯 收藏

          Lotus中定制搜索

          Sub SearchWeb()
           Dim QryDB As NotesDatabase
           Dim vwDBList As NotesView
           Dim sQueryString As String
           Dim sMinRecord,sMaxRecord,sSortMethod,sTemp,sQry,sOldQry,sSymbol As String
           Dim sSearchFuzzy As String
           Dim sUseCache As String
           Dim sServername As String
           Dim sDbName As String
           Dim sViewName As String
           Dim sPage As String
           Dim sCondition As String
           Dim sDBDocID As String
           Dim sFields As String
           Dim vResult() As Variant
           Dim vTemp,vDBDocList As Variant
           Dim i,j,iRecordNumber As Integer
           
           Set session = New NotesSession
           Set db = session.currentdatabase
           Set doc = session.documentcontext
           sQry = doc.Query_String_Decoded(0)
           sOldQry = sQry
           '-------------------------------- 獲取查詢參數 --------------------------------------
           vTemp = Evaluate("@ReplaceSubstring('"+sQry+"';'+';' ')")
           
           sTemp = vTemp(0)
           sQry = sTemp
           
           i = Instr(sTemp,"^")
           sCondition = Mid(sTemp,i+1) '查詢條件
           
           sDBDocID = Left(sTemp,i-1)
           i = Instr(sDBDocID,"&")
           sDBDocID = Mid(sDBDocID,i+1)'查詢視圖參數
           
           'sSortMethod = Mid(sCondition,Instr(sCondition,"~")+1,1)'排序方式 
           sSearchFuzzy = Mid(sCondition,Instr(sCondition,"!")+1,1)'是否使用模糊查詢
           sUseCache = Mid(sCondition,Instr(sCondition,"$")+1,1)'是否使用Cache
           
           i = Instr(sCondition,"@")
           j = Instr(i+1,sCondition,"@")
           sMinRecord=Val(Mid(sCondition,i+1,j-i-1))'查詢記錄起始數
           sMaxRecord=Val(Mid(sCondition,j+1))'查詢記錄每頁最大結果數
           sCondition = Mid(sCondition,1,i-1)'取得查詢關鍵字 
           
           vDBDocList = Extract(sDBDocID,",") '獲取查詢視圖參數的數組
           
           Call ExtractArray(sCondition) '獲取查詢關鍵字列表
           iRecordNumber = 0
           sPage = ""
           sSymbol = ""
           If sSearchFuzzy = "1" Then
            sSymbol = "*"
           End If
           '------------------------------------------------------------------------------------
           '---------------------------------- 開始查詢 ----------------------------------------
           Forall x In vDBDocList
            vTemp = Extract(Cstr(x),"!")'拆分查詢參數(所在服務器!所在數據庫!查詢視圖)
            
            sServerName=vTemp(0)'查詢數據庫所在服務器
            sDbName=vTemp(1)'查詢數據庫
            sViewName = vTemp(2)'查詢的視圖名
            
            Set QryDB = New NotesDatabase(sServerName,sDbName)'取得查詢數據庫對象
            
            Set view = QryDB.getview(sViewName)'取得查詢數據庫視圖
            sQry=""
            sQueryString = ""
            Forall y In sQryKey
             sQry = Replace(y,"""","''")
             sTemp = ""
             '當指定域查詢時
             If doc.Fields(0) <> "" Then
              Forall z In doc.Fields
               If sTemp = "" Then
                sTemp = "FIELD "+z+{ contains "}+sSymbol+sQry+sSymbol+{"}
               Else
                sTemp = sTemp + " AND FIELD "+z+{ contains "}+sSymbol+sQry+sSymbol+{"}
               End If
              End Forall
              
              If sQueryString = "" Then
               sQueryString = "(" + sTemp +")"
              Else
               sQueryString = sQueryString + " OR (" + sTemp +")"
              End If
             Else'未指定域
              If sQueryString = "" Then
               sQueryString = sQry
              Else
               sQueryString = sQueryString + " AND " + sQry
              End If
             End If
            End Forall
            j = view.FTSearch( sQueryString, Cint(sMaxRecord))'開始查詢
            '將結果形成XML數據
            If j>0 Then
             For i = 1 To j
              iRecordNumber = iRecordNumber + 1
              Set qrydoc = view.getnthdocument(i)
              sPage = sPage + {<row url="javascript:opendoc('/}+QryDB.Replicaid+{/0/}+qrydoc.Universalid+{?opendocument')">}
              sPage = sPage + {<number>}+Cstr(iRecordNumber)+{</number>}
              sPage = sPage + {<title>}+qrydoc.ColumnValues(0)+{</title>}
              sPage = sPage + {<category>}+doc.Name(0)+{</category>}
              sPage = sPage + {<score>}+Cstr(qrydoc.FTSearchScore)+{%</score>}
              sPage = sPage + {</row>}
             Next
            End If
            Call view.clear
           End Forall
           '------------------------------------------------------------------------------------
           '---------------------------------- 輸出結果 ----------------------------------------
           Print {Content-type: text/xml}
           Print {<?xml version='1.0' encoding="utf-8" ?>}
           Print {<view name="查詢結果" id="vgosearchresult.xml">}
           Print {<header>}
           Print { <number>序號</number>}
           Print { <title>標題</title>}
           Print { <category>位置</category>}
           Print { <score>匹配度</score>}
           Print {</header>}
           Print {<action/>}
           Print {<rows>}
           Print sPage
           Print {</rows>}
           Print {</view>}
           '------------------------------------------------------------------------------------
          End Sub

          posted @ 2010-04-09 09:21 明高 閱讀(140) | 評論 (0)編輯 收藏

          在Lotus開發中的使用JDBC進行數據交互

          import java.io.*;
          import java.net.URL;
          import java.sql.*;
          import java.util.Properties;
          import lotus.notes.*;
          import java.util.*;

          public class  savetonewdatabase extends AgentBase {
           public void NotesMain() {

            Driver drv = null;
            PrintWriter out = null; 
                 try {
                     Session session = getSession();
                     AgentContext ac = session.getAgentContext();
                     Database db = ac.getCurrentDatabase();
             Database SendDB = session.getDatabase(db.getServer(),"lt_getfile.nsf");
                     Document doc = ac.getDocumentContext();   

                     out = getAgentOutput();      
                         String docUnid;
                         //Get the new record's unid
                         docUnid = uniqueID();
                             
             //Get the sql insert statement   
             StringBuffer SqlUrl = new StringBuffer("Insert into Shouwen_stat (");
             StringBuffer SqlValue = new StringBuffer(" values (");

               String temp= doc.getItemValueString("F_hao");
            
                         if(temp!=null){
                          temp = doc.getItemValueString("F_ziTitle")+"〔"+doc.getItemValueString("F_zi")+"〕"+doc.getItemValueString("F_hao")+"號";
                          }else{
                          temp = "〔"+doc.getItemValueString("F_zi")+"〕";
                         }  
           
             if (temp!= null){
              SqlUrl.append("doc_no");
              SqlValue.append("'" + temp+"'");
               
             }
             String doc_id = doc.getItemValueString("CurDocId");
             if (doc_id != null) {
              SqlUrl.append(",doc_id");
              SqlValue.append(",'" + doc_id + "'");
             }
             String sqlField = doc.getItemValueString("F_title");
             if (sqlField != null) {
              SqlUrl.append(",doc_title");
              SqlValue.append(",'" + sqlField + "'");
              }
             
             sqlField = doc.getItemValueString("shenghr");
             if (sqlField != null) {
              SqlUrl.append(",niban_people");
              SqlValue.append(",'" + sqlField + "'");
             }
             
             sqlField = doc.getItemValueString("F_BigSpecies");
             if (sqlField != null) {
              SqlUrl.append(",wen_zhong");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("text");
             if (sqlField != null) {
              SqlUrl.append(",file_content");
              SqlValue.append(",'" + sqlField  + "'");
             }

             sqlField = doc.getItemValueString("timewrite"); //收文日期
             
             if (sqlField != null) {
              SqlUrl.append(",shouwen_date");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("F_FilekeyWord");
             if (sqlField != null) {
              SqlUrl.append(",title_word");
              SqlValue.append(",'" + sqlField  + "'");
              }
             sqlField = doc.getItemValueString("F_emergency");
             if (sqlField != null) {
              SqlUrl.append(",huan_ji");
              SqlValue.append(",'" + sqlField + "'");
             }
             
             sqlField = doc.getItemValueString("F_UnitName");
             if (sqlField != null) {
              SqlUrl.append(",laiwen_unit");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("F_Secret");
             if (sqlField != null) {
              SqlUrl.append(",mi_ji");
              SqlValue.append(",'" + sqlField  + "'");
              }

             sqlField = doc.getItemValueString("laiwfs");
             if (sqlField != null) {
              SqlUrl.append(",laiwen_mode");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("shengpyj");
             if (sqlField != null) {
              SqlUrl.append(",niban_date");
              SqlValue.append(",'" + sqlField  + "'");
             }
             
             sqlField = doc.getItemValueString("shenghyj");
             if (sqlField != null) {
              SqlUrl.append(",niban_yijian");
              SqlValue.append(",'" + sqlField + "'");
             }
             
             sqlField = doc.getItemValueString("F_EndTime");
             if (sqlField != null) {
              SqlUrl.append(",banli_qixian");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("lind");
             
             if (sqlField != null) {
              SqlUrl.append(",chengban_yj");
              SqlValue.append(",'" + sqlField  + "'");
              }

             sqlField = doc.getItemValueString("pisyj");
             if (sqlField != null) {
              SqlUrl.append(",piban_date");
              SqlValue.append(",'" + sqlField  + "'");
             }
             
             sqlField = doc.getItemValueString("lindps");
             if (sqlField != null) {
              SqlUrl.append(",piban_yijian");
              SqlValue.append(",'" + sqlField  + "'");       
             }

                 sqlField = doc.getItemValueString("banlyj");
             if (sqlField != null) {
              SqlUrl.append(",banli_jieguo");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("banlr");
             if (sqlField != null) {
              SqlUrl.append(",banli_people");
              SqlValue.append(",'" + sqlField  + "'");
             }

             sqlField = doc.getItemValueString("banlsj");
             if (sqlField != null) {
              SqlUrl.append(",banli_date");
              SqlValue.append(",'" + sqlField  + "'");
             }
                         sqlField = doc.getItemValueString("chengbyj");
             if (sqlField != null) {
              SqlUrl.append(",piban_people");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("chengbr");
             if (sqlField != null) {
              SqlUrl.append(",chengban_people");
              SqlValue.append(",'" + sqlField  + "'");
             }

             sqlField = doc.getItemValueString("chengbsj");
             if (sqlField != null) {
              SqlUrl.append(",chengban_date");
              SqlValue.append(",'" + sqlField  + "'");
             }
             sqlField = doc.getItemValueString("temp");  //流水號
             if (sqlField != null) {
              SqlUrl.append(",shouwen_bianhao");
              SqlValue.append(",'" + sqlField  + "'");
             }  
             sqlField=doc.getItemValueString("shihgd");   //文件是否歸檔
            if(sqlField!=null){
             SqlUrl.append(",document_state");
              SqlValue.append(",'"+sqlField+"'");
             } 
             sqlField=doc.getItemValueString("wenjzx");    //文件走向
             if(sqlField!=null){
              SqlUrl.append(",send_file");
              SqlValue.append(",'"+sqlField+"'");
             }   

             SqlUrl.append(")");
             SqlValue.append(")");
             String Va = SqlValue.toString();
              SqlUrl.append(Va);
             
             // Connect to data source
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             drv = new sun.jdbc.odbc.JdbcOdbcDriver();   
             
             String url = "jdbc:odbc:is_archive";
                           
             Properties props = new Properties();
             props.put("user","isa");
             props.put("password","gxmi");   
             Connection con = drv.connect(url,props);
             
             if (con==null){
              out.println("<h1>Con't Connect to DB!</h1>");
              return;
             }   
             Statement stmt = con.createStatement();
             
             //Insert a record to the Fwdj table             
             Va = SqlUrl.toString();
             Va =new String(Va.getBytes("gb2312"),"ISO-8859-1"); 
             
             stmt.executeUpdate(Va);
           
            
                   out.println("<link rel='stylesheet' href='/oa.css'><br><br><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>");
                       out.println("<TR VALIGN=top><TD WIDTH=232><IMG SRC='/Lt_getfile.nsf/c01a1dee4878d8a648256b270024a88c/$Body/0.25E!OpenElement&FieldElemFormat=gif' WIDTH=208 HEIGHT=21></TD>");
                       out.println("<TD WIDTH=416 VALIGN=middle><DIV ALIGN=center><B><FONT SIZE=5 COLOR='0000FF'>操作反饋信息</FONT></B></DIV></TD></TR></TABLE>");
                       out.println("<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR VALIGN=top>");
                       out.println("<TD WIDTH=689><IMG SRC='/Lt_getfile.nsf/c01a1dee4878d8a648256b270024a88c/$Body/0.CFA!OpenElement&FieldElemFormat=jpg' WIDTH=688 HEIGHT=4></TD></TR>");
                       out.println("</TABLE><BR><br><br><br><br><P><BR><BR><BR><BR>");
                       out.println("<table border=0  bgColor=#0099cc borderColorLight=#000000 cellPadding=1 cellSpacing=2 align='center'><tr><td  bgcolor=#EFEFEF>文件發送給下一辦理人"+doc.getItemValue("sendtobak")+"辦理!</td></tr></table>");
           
            } catch (Exception e) {
             out.println(e.getMessage());
             e.printStackTrace();
            }
              }
           public static String uniqueID()
            {
                   StringBuffer sb=new StringBuffer(20);
               java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy/MM/dd");
               java.util.Date currentTime=new java.util.Date();
               String sid=formatter.format(currentTime);
               return sid;
               }
              
           public static String replaceAll(String operStr,String oldStr ,String replaceStr){
            int fromIndex=0;
            int index=0;
            int oldStrLen=oldStr.length();
            int replaceStrLen=replaceStr.length();
            
            while((index=operStr.indexOf(oldStr,fromIndex))!=-1){
             //新的位置起點
             //fromIndex+replaceStrLen-oldStrLen+1
             fromIndex=index + replaceStrLen;
             operStr=operStr.substring(0,index)+replaceStr+
              operStr.substring(index+oldStrLen,operStr.length());
            }
            
            return operStr;
           }
           
           
           
          }

          posted @ 2010-04-09 09:20 明高 閱讀(404) | 評論 (0)編輯 收藏

          lotus notes 開發中BS下實現組合查詢的方法

          在進行系統設計的時候用戶要求對各文件能夠實現組合條件的查詢和統計,開發之初我選擇了notes自身提供的綜合查詢表單$$Search Form來實現,但在用戶使用了一段時間發現,采用$$Search Form來進行組合條件查詢時常常會搜索到許多并不滿足條件的文檔或者搜索到的文檔根本就不知道是什么,為了解決這個問題,我決定寫代碼來實現組合條件查詢,下面就來講講實現的過程。   首先建立一個表單(Fsearch),主要用來現實和選擇查詢條件,表單的域元素如下表所示:

          編號
           域名
           含義
           類型
           說明
           
          01
           SaveOptions
           防止使用該表單創建文檔
           文本域
           該域是系統域當值為”0”的時候當前表單不會創建文檔,因為這里使用該表單僅僅是為了選擇查詢條件,不需要創建文檔,所以該域的值為“0”
           
          02
           biaoti
           發文標題
           文本域
            
          03
           zhutici
           主題詞
           文本域
            
          04
           laiwenhao
           發文號
           文本域
            
          05
           nigaoren
           擬稿人
           文本域
            
          06
           danwei
           擬稿人單位
           文本域
            
          07
           syear
           文檔所屬年度
           文本域
            
          08
           smonth
           文檔所屬月份
           文本域
            

          在表單上按照用戶要求和使用習慣利用表格布局好上述元素后,在表單上創建一個熱點按鈕“現在查找“,執行@Command([ToolsRunMacro];"(wFaWenSearch)") 的公式命令,其中wFaWenSearch 是一個共享代理,代碼如下:Sub Initialize    ‘//定義變量 Dim session As New NotesSession Dim cDoc As NotesDocument Dim db As NotesDatabase Dim sResult , Set sResultemp  As NotesDocumentCollection Dim sql As String   Set db=session.currentDatabase  ‘//獲得當前數據庫 Set cDoc=session.DocumentContext() ‘//獲得當前文檔,即用戶打開的選擇條件的表單Fsearch Set view=db.getView("($UNID)") ‘//獲得($UNID)視圖,該視圖里現實所有文件 ‘//============獲取查詢條件=========// sYear=cDoc.syear(0) sMonth=cDoc.smonth(0) biaoti=cDoc.biaoti(0) zhutici=cDoc.zhutici(0)  laiwenhao=cDoc.laiwenhao(0) danwei=cDoc.danwei(0) nigaoren=cDoc.nigaoren(0)  ‘//================END================//‘//=====組合查詢條件======//sql="form=""fwmain"""+"&(@Contains(biaoti;"""+biaoti+""")"+"|@Contains(zhutici;"""+zhutici''>|@Contains(zhutici;"""+zhutici+""")"+_"|@Contains(t1+""[""+@text(t2)+""]""+@text(t3''>|@Contains(t1+""[""+@text(t2)+""]""+@text(t3)+ ""號""+;"""+laiwenhao+""")"+"|@contains(danwei">|@contains(danwei; """+danwei+""")"+_"|@Contains(nigaoren;"""+nigaoren+""")"+"|@Contains(sYear;"""+sYear''>|@Contains(nigaoren;"""+nigaoren+""")"+"|@Contains(sYear;"""+sYear+""")"+"| @Contains(sMonth;"""+sMonth+"""))"Set  sResultemp= db.search(sql,Nothing,0)  ‘//在數據庫中搜索滿足上述條件的所有文檔,獲得該文檔集;但是由于使用search語法會把當前操’//作者沒有閱讀權限的文檔也搜索到,所以先把搜索到的文檔集賦予臨時變量sResultemp 再進行處理 Set  sResult=db.search("@Contains(sYear;''1'')",Nothing,0) ‘//初始化一個文檔集sResul,這文檔集中沒有文件的‘//========下面這循環主要是利用視圖對文檔讀者權限的限制功能把sResultemp====//‘//========這個文檔集中當前用戶有閱讀權限的文檔添加到文檔集sResul中去=====// For i=1 To  sResultemp.count  Set  sDoc=sResultemp.getNthDocument(i)  key=sDoc.bh(0)  Set  Sview=db.getView("default")  Set  sDoc=Sview.Getdocumentbykey(key,True)  If  Not  sDoc  Is  Nothing Then   Set  sDoctmp=sResult.Getdocument(sDoc)   If  sDoctmp Is  Nothing Then    Call sResult.Adddocument(sDoc)   End If  End If Next If  sResult.count=0  Then  Print "沒有找到您要查找的文件"  Exit Sub End  If  ''//=========創建網頁來顯示查詢結果=======// Print "<html>" Print "<head>" Print "<link rel=stylesheet type=text/css href=ViewCss.css>" Print "</script>" Print "</head>"Print "<body>" Print "<table width=100%>" Print "<tr>" Print "<td colspan=6 align=right style=border-style:solid;border-width:0 0 2px;border-color:#669933>查找到&nbsp;"+Cstr(jjj)+"&nbsp;份文件&nbsp;<br>" Print "</td>" Print "</tr>" Print "<tr>" Print "<td width=5% class=td1></td>" Print "<td width=10% class=td1>年度</td>" Print "<td width=10% class=td1>月份</td>" Print "<td width=40% class=td1>標題</td>" Print "<td width=20% class=td1>主辦部門</td>" Print "<td width=15% class=td1>擬稿人</td>" Print "</tr>" For i=1 To sResult.count  Set sDoc=sResult.getNthDocument(i)  Set sDoc=view.getDocumentByKey(sDoc.bh(0),True)  If Not sDoc Is Nothing Then      Print "<tr>"    Print "<td class=tdx><a href=/"+sDoc.DBPath(0)+"/merit_gwgl.nsf/($UNID)/"+sDoc.UniversalID+"?opendocument target=_blank><img src=01.gif border=0 ></a></td>"   Print "<td class=tdx>"+sDoc.sYear(0)+"</td>"   Print "<td class=tdx>"+sDoc.sMonth(0)+"</td>"   Print "<td class=tdx>"+sDoc.biaoti(0)+"</td>"   Print "<td class=tdx>"+sDoc.danwei(0)+"</td>"   Print "<td class=tdx>"+sDoc.nigaoren(0)+"</td>"   Print "</tr>"  End If Next Print "</table>"  Print "</body>" Print "</html>" End Sub

          posted @ 2010-04-09 09:20 明高 閱讀(398) | 評論 (0)編輯 收藏

          Js操控Lotus中的附件

          <input type="checkbox" name="%%Detach" value="IBM咨詢.txt"><a href="附件路徑">IBM咨詢.txt</a></td></tr>

          選中以后,保存文檔,附件就會被系統自動刪除 
          江川之子 22:04:47 使用什么方法定位嵌入的embeddedobject呢 ,嵌入到文檔還是rtf域 
          CoolStar~_~ 22:04:55 文檔 
          江川之子 22:05:24 只能用getembedobject 
          江川之子 22:05:44 如果是rtf中的就可以用ref。emdedobjects  

           主業務數據表組,日志數據表組,組織結構權限組表,輔助數據表組,業務控制數據表組,
          尤其對于oa,組織結構最重要。對于一般的業務,業務控制數據最重要,這樣可以讓你的業務變的很靈活。

          posted @ 2010-04-09 09:19 明高 閱讀(162) | 評論 (0)編輯 收藏

          LotusScript操縱附件

          Sub InitAttachment
           On Error Goto ErrorHandle
           Dim temDoc    As notesDocument
           Dim temDoc1  As NotesDocument
           Dim docAttachment As NotesDocument
           Dim strQuery   As String
           Dim strUNID   As String
           Dim strFormula  As String
           Dim strList  As String
           Dim vPath   As Variant
           strQuery = note.Query_String_Decoded(0)
           If Instr(strQuery,"&UNID=") > 0 Then
            strUNID = Mid(strQuery,Cint(Instr(strQuery,"&UNID=")) + 6,32)
            Set temDoc = db.GetDocumentByUNID(strUNID)
            If Not (temDoc Is Nothing) Then
             Set docAttachment = db.CreateDocument
             docAttachment.Form = "fmAttachment"
             docAttachment.Status = "0"
             docAttachment.CourseInfoUnid = temDoc.UniversalID
             If temDoc.HasEmbedded Then   
              Set temDoc1 = db.CreateDocument
              Call temDoc.CopyAllItems (temDoc1)
              Forall item In temDoc1.Items
               If Not (Ucase(item.Name) = "$FILE") Then
                temDoc1.RemoveItem (item.Name)
               End If
              End Forall
              Call temDoc1.CopyAllItems(docAttachment)
             End If   
            End If  
           End If
           Call docAttachment.Save(True,False)
           docAttachment.CurUnid = docAttachment.UniversalID
           Call docAttachment.Save(True,False)
           vPath = Evaluate(|@ReplaceSubstring(@Subset(@DbName;-1); " " : "\\"; "+" : "/")|)
           Print |<script language="javascript">  |
           Print |<!--       |
           Print |window.location.href = "/| & vPath(0) & _
           |/0/| & docAttachment.UniversalID & |?editdocument";|
           Print |-->    |
           Print |</script>   | 
           Exit Sub
          'Domino Control Platform Error Info  
          ErrorHandle:
           Messagebox db.FilePath & "_LibEduCommand.InitAttachment:" & Error$ & " at line number " & Cstr(Erl)
           'Resume Next 
          End Sub

          posted @ 2010-04-08 19:50 明高 閱讀(424) | 評論 (0)編輯 收藏

          使用MIME發送郵件通知

          Sub SendMailNotification( docMain As Notesdocument, strSendto As String ,strTempletNum As String)
           On Error Goto ErrorHandle
           
           Dim docMail   As NotesDocument
           Dim rti    As NotesRichTextItem
           Dim body    As NotesMIMEEntity
           Dim child   As NotesMIMEEntity
           Dim stream   As NotesStream
           Dim strTmp   As String
           Dim strReplace  As String
           Dim bSuccess  As Boolean
           Dim strHtml  As String
           s.ConvertMIME   = False
           Set stream   = s.CreateStream
           
           Set docMail  = New NotesDocument(docMain.ParentDatabase) 
           Call docMail.ReplaceItemValue("Form","Memo")
           Call docMail.ReplaceItemValue("Principal","Reporter Notification")
           Call docMail.ReplaceItemValue("ReplyTo","")
           Set body   = docMail.CreateMIMEEntity("Body")
           Set child  = body.CreateChildEntity
           
           
           Call stream.WriteText(MailText(docMain,strTempletNum))
           Call docMail.ReplaceItemValue( "Subject",MailSubject(docMain,strTempletNum))   
           
           strHtml = |<br><div style="font-size:15px; "><b><a href="|&ProfileDoc.DBHome(0) & ProfileDoc.DBPath(0) & |/0/| & docMain.UniversalID &|?opendocument"  target="_blank">請點擊打開文檔</a></b></div>|
           stream.WriteText(strHtml)
           
           Call docMail.ReplaceItemValue("BlindCopyTo", strSendto)
           Call child.SetContentFromText(stream, "text/html;charset=GB2312", ENC_NONE)
           Call stream.Truncate
           Call docMail.Send(False)
           s.ConvertMIME = True  
           Call docMail.Remove(True)
           
           Exit Sub
          ErrorHandle:
           'iSuccess = False
           Messagebox db.FilePath & "_LSMailCommand.SendNotification:" & Error$ & " at line number " & Cstr(Erl) 
           Exit Sub
          End Sub

          posted @ 2010-04-08 19:41 明高 閱讀(163) | 評論 (0)編輯 收藏

          Excel報表統計

          'Print |正在統計,請稍候...|
           Print |<script language="javascript">   |
           Print |<!--
                var oXL
                var oBook
                var oSheet1
            var oXL = new ActiveXObject("Excel.Application");       
                oBook = oXL.Workbooks.Add();
                oSheet1 = oBook.ActiveSheet; 
            oSheet1.Name = "IP-ASIC-Simulation";
            oXL.sheets(oSheet1.Name).Select;
            oXL.Range("A1:G1").Select;
            oXL.Selection.RowHeight = 28.50;
            oXL.Selection.HorizontalAlignment = 3;
            oXL.Selection.VerticalAlignment = 3 ;
            oXL.Selection.Font.Name = "宋體";
            oXL.Selection.Font.FontStyle = "加粗";
            oXL.Selection.Font.Size = 10;
            oXL.Selection.Interior.ColorIndex = 19;
            oXL.Selection.Borders.LineStyle = 1;
            oSheet1.Cells(1,1).Value = "Customer's Project";
            oSheet1.Cells(1,2).Value = "SH Project";  
            oSheet1.Cells(1,3).Value = "GID";
            oSheet1.Cells(1,4).Value = "RD Users";
              oSheet1.Cells(1,5).Value = "Layout Users";
            oSheet1.Cells(1,6).Value = "Created Time";
            oSheet1.Cells(1,7).Value = "Update Time";
            oXL.Selection.Columns.AutoFit;
            oXL.Selection.Rows.AutoFit;
            |  
           i = 2 
           
           While Not (doc Is Nothing)
            Print |oSheet1.Cells(| & Cstr(i) & |,1).Value = "| & Cstr(doc.Plan_Code_Sunplus(0)) &     |";|
            Print |oSheet1.Cells(| & Cstr(i) & |,2).Value = "| & Cstr(doc.Plan_Code_Sh(0)) &   |";|
            Print |oSheet1.Cells(| & Cstr(i) & |,3).Value = "| & Cstr(ProfileDoc.GID(0)+i-2) &    |";|
            'RDUser和LayoutUser
            For j=1 To doc.num(0)   
             strItemName   = "LoginName" & j
             Set item      = doc.GetFirstItem(strItemName)
             strUserList = strUserList + item.Text+","
            Next
            Print |oSheet1.Cells(| & Cstr(i) & |,4).Value = "| & strUserList &     |";|
            Print |oSheet1.Cells(| & Cstr(i) & |,5).Value = "| & strUserList &     |";|
            Print |oSheet1.Cells(| & Cstr(i) & |,6).Value = "| & Cstr(doc.Created) &    |";|
            Print |oSheet1.Cells(| & Cstr(i) & |,7).Value = "| & Cstr(doc.ChangeDate(0)) &   |";|
            
            i = i+1 
            Print |
             oXL.sheets(oSheet1.Name).Select;
             oXL.Range(oSheet1.Cells(2,1),oSheet1.Cells(| & Cstr(i) & |-1,7)).Select;
             oXL.Selection.Font.Name = "宋體";
             oXL.Selection.Font.Size = 10;
             oXL.Selection.Borders.LineStyle = 1;
             oXL.ReferenceStyle = 1;
             oXL.Range("A1").Select;
              |  
            Set doc  = vw.GetNextDocument(doc)
           Wend
           
           Print |oXL.Visible  =  true; |
           Print |window.history.go(-1); |
           'Print |window.close();  |
           Print |-->    |
           Print |</script>   |

          posted @ 2010-04-08 19:39 明高 閱讀(195) | 評論 (0)編輯 收藏

          關于函件收集

          基本原理:函件收集針對異域domino服務器的notes數據庫進行信息的傳遞。
          啟動administrator端,選擇"People&Group"的標簽;
          展開"Mail-In Database and Resources",添加“函件收集數據庫”;
          以新聞數據庫為例:
          函件收集數據庫名稱:dccnews(隨意)
          Internet地址:dccnews@ibm.com
          網絡域:ibm
          服務器:mingle/ibm
          文件名:oa/dccnews.nsf

          說明:dccnews@ibm.com為郵件的通信地址,不需要單獨為此在names.nsf中注冊。只需要將其在外發的郵件服務器中設置,這樣進來的郵件可以識別即可。我們可以通過創建類型為“郵件進入時”的代理即可解析和接收郵件的信息。

          posted @ 2010-04-08 19:25 明高 閱讀(212) | 評論 (0)編輯 收藏

          Lotus表單中的內置域

          $Conflict
          如果文檔中有此域產生,則標志此域為沖突文檔。

          posted @ 2010-04-08 19:23 明高 閱讀(134) | 評論 (0)編輯 收藏

          Lotus表單中未公開的域

          $$QuerySaveAgent
          功能:等價于表單中的WebQuerySave事件。

          posted @ 2010-04-08 19:04 明高 閱讀(147) | 評論 (0)編輯 收藏

          LotusScript面向對象程序設計

          示例代碼:
          Class DOMobj_Person
           gdoc_Person As NotesDocument
           
          ' ** 屬性
           Property Get Document
            Set Document = gdoc_Person
           End Property
           Property Set Document
            Set gdoc_Person = Document
           End Property
           
           Property Get NotesID
            NotesID = gdoc_Person.GetItemValue("NotesID")(0)
           End Property
           
           Property Get No
            No = gdoc_Person.GetItemValue("EmpNo")(0)
           End Property
           
           Property Get CName
            CName = gdoc_Person.GetItemValue("EmpCName")(0)
           End Property
           
           Property Get EName
            EName = gdoc_Person.GetItemValue("EmpName")(0)
           End Property
           
           Property Get DeptNo
            DeptNo = gdoc_Person.GetItemValue("DeptNo")(0)
           End Property
           
           Property Get DeptName
            DeptName = gdoc_Person.GetItemValue("DeptCName")(0)
           End Property
           
           Property Get DeptLayer
            DeptLayer = gdoc_Person.GetItemValue("DeptLayer")(0)
           End Property
           
          ' ** 代理資訊
           Property Get AgentStatus
            AgentStatus = gdoc_Person.GetItemValue("AgentStart")(0)
           End Property
          ' ** 建構子
           Sub New(pstr_SearchType As String , pstr_SearchKey As String)
            Set gdoc_Person = domf_docGetPersonal(pstr_SearchType , pstr_SearchKey)
           End Sub
           
          ' ** 方法
           Function getPerson(pstr_SearchType As String , pstr_SearchKey As String)
            Set gdoc_Person = domf_docGetPersonal(pstr_SearchType,pstr_SearchKey)
           End Function
          '---get First Item Value
           Function getFirstItemValue(pstr_item As String) As Variant
            getFirstItemValue = Me.gdoc_Person.getFirstItemValue(pstr_item)
           End Function
          '---get Default Deputy
           Function getDefaultDeputy() As DOMobj_Person
            Set getDefaultDeputy = Nothing
            If (Me.AgentStatus) Then
             If gdoc_Person.GetItemValue("DeputyEmpNo")(0) <> "" Then
              Set getDefaultDeputy = New DOMobj_Person("NO" , gdoc_Person.GetItemValue("DeputyEmpNo")(0))
             End If
            End If
           End Function
          '---get Class Deputy
           Function getDeputyByClass(pstr_Class As String)
            
           End Function
          End Class

          posted @ 2010-04-08 19:01 明高 閱讀(282) | 評論 (0)編輯 收藏

          Domino web access無法下載中文名稱附件

          這是一個老生常談的老問題:

          環境:Domino7.0.1 2003server.Sp1,用戶mail模板Dwa7.ntf
          利用Domino web access訪問用戶mail數據庫,時常出現無法下載保存中文名稱附件。
          影響的Domino版本很多,IBM承認是軟件bug,但一直沒有解決這個問題

          附件格式:
          中英文混和、utf格式的文檔、名稱中包含+號、包含路徑等的附件名稱格式
          心細的你可能注意到,如果你發送一個如:abc中文.txt的附件,用戶收到后,附件名稱就會變更為“abc 中文.txt”,中間多了一個空格!

          解決:
          看多了網絡上關于這個方面的討論,沒有徹底的解決方法
          1:修改服務器文檔---internet協議---Domino web引擎中的“字符集”,使用UTF-8輸出
          2:如果碰到這個問題,將這個郵件轉發給自己!在看看,一般而言也可以打開(這個是IBM發布的變相解決,嘿嘿)
           相關配置
          當前服務器文檔
          tab標簽“Internet協議”——〉tab標簽“Domino Web引擎”,依次找到語言項設置:
          缺省字符串資源語言:英語
          其他字符串資源語言:中文(簡體),中文(繁體)
          字符集
          使用UTF-8輸出:是
          在HTML表單中使用UTF-8:是
          缺省的字符集群組:簡體中文
          安裝多語言包
          比如客戶端使用的是繁體中文的操作系統,domino server就必須安裝繁體中文的語言包,否則此客戶將無法訪問中文名稱(比如:上海世博.ppt)的附件。

          posted @ 2010-04-08 13:14 明高 閱讀(1418) | 評論 (0)編輯 收藏

          設計附件——公式語言

          解決方案1、附件存儲在單獨的一個數據庫中,供業務文檔來訪問使用。
          AttachmentDBPahtUrl :=@GetProfileField("ConfigProfile";"DBHome") + @GetProfileField("ConfigProfile";"AttachmentDBPath");
          @Implode("<div align=left><IMG SRC=\"/icons/vwicn005.gif\"><A HREF=" + AttachmentDBPahtUrl + "0/"+@Text(AttachmentDocID0)+"/$FILE/"+@URLEncode("Domino";AttachmentName0)+" TARGET=_BLANK>"+AttachmentName0+"</A>&nbsp;</div>")

          域AttachmentDocID0:存儲附件所在的文檔的UNID
          域AttachmentName0:存儲附件的名稱,可能為中文、字母和相關符號的組合。
          @URLEncode:對附件的名字進行編碼,避免OS為繁體或其他非簡體中文的操作系統因URL鏈接被截斷而無法訪問。


          在Lotuscript中對漢語進行URLEncode
          兩種方式:
          1、在ls中使用公式語言
            Dim cmd As String
           Dim x As Variant
           cmd = {@URLEncode("Domino";"上海世博會")}
           x=Evaluate(cmd)
           msgbox CStr(x(0))
          2、使用ls自定義的函數

          posted @ 2010-04-07 18:21 明高 閱讀(201) | 評論 (0)編輯 收藏

          <2010年4月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 芷江| 青浦区| 辉县市| 赤峰市| 伽师县| 德格县| 定襄县| 通许县| 彰化市| 启东市| 兴化市| 石狮市| 太康县| 英德市| 襄城县| 邯郸市| 抚顺县| 迭部县| 威远县| 德安县| 余姚市| 固原市| 呈贡县| 宁明县| 团风县| 吴桥县| 区。| 平山县| 正宁县| 福安市| 札达县| 偃师市| 柞水县| 大同县| 常州市| 郓城县| 县级市| 琼中| 卓资县| 扎赉特旗| 北流市|