其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
把notes里的以OLE形式存放的对象,导出成一个文件。

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

把notes里的以OLE形式存放的对象,导出成一个文件。
Sub Click(Source As Button)
 On Error Goto isoErr
 Dim w As New NotesUIWorkspace
 Dim s As New NotesSession
 Dim isoLog As New NotesLog("WriteIso")
 
 Dim dbCur As NotesDatabase 
 Dim dclCur As NotesDocumentCollection
 Dim docCur As NotesDocument
 Dim ole As NotesEmbeddedObject
 Dim att As Variant
 
 Dim dbNew As NotesDatabase
 
 Call isoLog.OpenFileLog("d:\isoLog.txt")
' isoLog.OverwriteFile=True
 
 isoLog.LogAction("===========================当前时间是:"+Now()+"======================================")
 Set dbCur=s.CurrentDatabase  
 Set dbNew=s.GetDatabase("CN=zhbpms/O=gdtel","zhteloa\IsoFileManager.nsf",False)
%REM
 Dim docIso As  NotesDocument
 Dim docF As NotesDocument 
 Set docIso=dbNew.CreateDocument
 Set docF=dbNew.GetDocumentByUNID("9D7EE71D70644E7048256F3800345178")
 docIso.form="F_DeptFile"
 docIso.ParentDocUNID="9D7EE71D70644E7048256F3800345178"
 docIso.Str_Type="File"
 docIso.FolderName="导出操作"
 docIso.Str_OrgType="Org"
 docIso.DocID=docIso.UniversalID
 docIso.delSymbol="0"
 docIso.dbpath="zhteloa/IsoFileManager.nsf"
 
 If docIso.Save(True,False) Then
  Call docIso.MakeResponse(docF)
  Call docIso.Save(True,False)
 Else
  isoLog.LogAction("a")
 End If
%ENDREM
 Set dclCur=dbCur.UnprocessedDocuments
 If dclCur.Count>0 Then 
  Set docCur=dclCur.GetFirstDocument
  While Not docCur Is Nothing
'拆离旧ISO的数据   
   If docCur.HasEmbedded Then
    Dim App
    Dim Document
    Dim RTItem As NotesRichTextItem
    Dim Embedded As NotesEmbeddedObject
    Set RTItem = docCur.GetFirstItem("Body")
    Set Embedded = RTItem.EmbeddedObjects(0)
    Call Embedded.Activate(True)
    Set App = Embedded.Object
    '处理excel
    If docCur.~$OLEObjProgID(0)="Excel.Sheet" Then
     Call app.saveAs("d:\"+docCur.UniversalID+".xls")
'     Set wks=app.Application.Worksheets(1)
'     Call wks.saveAs("d:\"+docCur.UniversalID+".xls") 
'     App.Application.ActiveDocument.SaveAs("d:\\"+docCur.UniversalID+".xls")
    End If
    '处理ppt
    If docCur.~$OLEObjProgID(0)="PowerPoint.Show" Then
     Call app.saveAs("d:\"+docCur.UniversalID+".ppt")
    End If
    '处理word
    If docCur.~$OLEObjProgID(0)="Word.Document" Then
     Call app.saveAs("d:\"+docCur.UniversalID+".doc")
'     Set Document = App.Application.Documents(1)
'     Call Document.saveAs("d:\\"+docCur.UniversalID+".doc")
    End If
   End If
'把拆离出来的数据放到新的OA库中
   Dim docIso As  NotesDocument
   Dim rtf As NotesRichTextItem
   
   Dim docF As NotesDocument 
   Dim vwOrg As NotesView
   Dim dclSec As NotesDocumentCollection
   
   Set docIso=dbNew.CreateDocument
   Set vwOrg=dbnew.GetView("vwRootF")
   '找一级文件夹   
   If doccur.LargeKind(0)<>"" Then
'    Dim key As String
'    If doccur.LargeKind(0)="质量记录表格清单" Or doccur.LargeKind(0)="质量记录表格清单" Then
'     key="质量记录表样及清单"
'    Else
'     key=doccur.LargeKind(0)
'    End If
    Set docF=vwOrg.GetDocumentByKey(doccur.LargeKind(0))
    If docF Is Nothing Then
     isoLog.LogAction("新OA中没有“"+doccur.LargeKind(0)+"”这个一级分类!")
     Goto nextProDoc
    End If
   End If
   '查找二级文件夹
   If doccur.SecondKind(0)<>"" Then
    Set dclSec=docF.Responses
    Dim docTmp As NotesDocument
    Dim hasSec As Boolean
    
    hasSec=False
    If dclsec.Count>0 Then
     For i=1 To dclsec.Count
      Set docTmp=dclsec.GetNthDocument(i)
      If docTmp.FolderName(0)=doccur.SecondKind(0) Then
       Set docF=docTmp
       hasSec=True
      End If
     Next     
    End If
    
    If (Not hasSec) Or dclSec.Count=0 Then
     isoLog.LogAction("新OA中没有“"+doccur.SecondKind(0)+"”这个二级分类!")
     Goto nextProDoc
    End If    
   End If  
   
   docIso.form="F_DeptFile"
   docIso.ParentDocUNID=docF.UniversalID
   docIso.Str_Type="File"
   docIso.FolderName=docCur.subject(0)
   docIso.Str_OrgType="Org"
   docIso.DocID=docIso.UniversalID
   docIso.delSymbol="0"
   docIso.dbpath="zhteloa/IsoFileManager.nsf"
   docIso.Hidden="0"
   docIso.isArchivesAttach=""
   
   '设置正文信息
   docIso.HasWordDoc="1"
   IsUseUpTemplate="0"
   OFileName=docCur.UniversalID+".doc"
   OFileDate=""
   Dim srcFileName As String
   
   Set rtf=docIso.CreateRichTextItem("LastVersionDoc")   
   If docIso.Save(True,False) Then
    If docCur.~$OLEObjProgID(0)="Excel.Sheet" Then
     srcFileName=docCur.UniversalID+".xls"
'     Set wks=app.Application.Worksheets(1)
'     Call wks.saveAs("d:\"+docCur.UniversalID+".xls") 
'     App.Application.ActiveDocument.SaveAs("d:\\"+docCur.UniversalID+".xls")
    End If
    '处理ppt
    If docCur.~$OLEObjProgID(0)="PowerPoint.Show" Then
     srcFileName=docCur.UniversalID+".ppt"
    End If
    '处理word
    If docCur.~$OLEObjProgID(0)="Word.Document" Then
     srcFileName=docCur.UniversalID+".doc"
'     Set Document = App.Application.Documents(1)
'     Call Document.saveAs("d:\\"+docCur.UniversalID+".doc")
    End If    
    Call rtf.EmbedObject(EMBED_ATTACHMENT,"","d:\\"+srcFileName,srcFileName)    
    Call docIso.MakeResponse(docF)
    Call docIso.Save(True,False)
   Else
    isoLog.LogAction("a")
   End If
nextProDoc:   
   Set docCur=dclCur.GetNextDocument(docCur)
  Wend  
 End If
 
 isoLog.LogAction("===========================当前时间是:"+Now()+"======================================")
 Call isoLog.Close 
 Exit Sub 
isoERR:
 Print "第"+Cstr(Erl())+" 行,出现 "+Error()+"  错误"
 isoLog.LogAction(Cstr(Erl())+"  "+Error())  
 Call isoLog.Close 
End Sub


相关文章

相关软件