Domino 9 und frühere Versionen > Entwicklung

Probleme mit Agent

<< < (2/2)

piccolo:
hier der code, der agent wird bei einkommende mails gestartet, bzw. habs auch mit zeitplan probiert.......

Sub Initialize
'    # 1. Dimensionierung der Objekte
   Dim session As New NotesSession  
   ' # nenn die Session nicht 's' - einzelne Buchstaben verwendet man gerne als Zählvariablen in Schleifen
   
   Dim SourceDB As NotesDatabase  ' # besser wäre dbSource - das Objekt leitet den Namen ein...
   Dim TargetDB As NotesDatabase
   'Dim dc As NotesDocumentcollection  
   Dim TargetDoc As NotesDocument  ' # besser wäre docTarget - das Objekt leitet den Namen ein...
   Dim SourceDoc As NotesDocument
   
   'Dim object As NotesEmbeddedObject
   'Dim ItemType As Integer
   
   ' # ... die Dimensionierung innerhalb einer Do-While-Schleife macht keinen Sinn - hier ist sie richtiger
   'Dim AttachmentName As String
   'Dim newObject As NotesEmbeddedObject
   Dim rtitem As NotesRichTextItem
   Dim rtitem2 As NotesRichTExtItem
   ' # Initialisierung der benötigten Objekte
   dbserver ="LNSERVER**"   
   Set TargetDB = session.GetDatabase(dbserver,"\faxverteiler")
   
   ' # ...Validierung der Quelldatenbank
   Set SourceDB = session.CurrentDatabase
   If Not TargetDB.IsOpen Then
      Msgbox "Abbruch - die Quelldatenbank konnte nicht geöffnet werden"
      Exit Sub ' # ... bzw. Exit Function, wenn in einer Funktion gearbeitet wird.
   End If
   
   ' # ... Validierung der benötigeten Ansicht
   Set view = SourceDB.GetView( "Memo" )
   If view Is Nothing Then
      Msgbox "Abbruch - die Ansicht 'Memo' konnte nicht in der Quelldatenbank gefunden / geöffnet werden."
      Exit Sub ' # ... bzw. Exit Function, wenn in einer Funktion gearbeitet wird.
   End If
   
   ' # ... das erste Dokument initialisieren - war in deinem Code auskommentiert - warum
   Set SourceDoc = view.GetFirstDocument()
   
   ' # Der eigentliche Code, der das Ergebnis herstellen soll
   
   Do While Not (SourceDoc Is Nothing)
      
          ' Copy fields from Source Doc to Target Doc
      Set TargetDoc = New NotesDocument( TargetDB )
      TargetDoc.Form = "Memo"
'      TargetDoc.Category = SourceDoc.heading
'      TargetDoc.SubCat = SourceDoc.Category
      TargetDoc.docTitle = "Faxenmacher"
      
          ' # hier kommt der Code zur Übernahme des Attachments
      ' # ... ich würde das Feld mit dem Attachment in dein Zieldokument kopieren
      Set rtItem2 = SourceDoc.GetFirstItem("Body") ' # hier liegt das Attachment in der Regel  
   '   Call TargetDoc.CopyItem( rtItem, "Body" )      
      ' # ... Attachment übernommen.
        ' Copy fields from Source Doc to Target Doc
      ' # hier kommt der Code zur Übernahme des Attachments
      ' # ... ich würde das Feld mit dem Attachment in dein Zieldokument kopieren
      ' # ... Attachment übernommen.
      
      Set TargetDoc = New NotesDocument( TargetDB )
      TargetDoc.form = "Memo"
'      TargetDoc.Category = SourceDoc.heading
'      TargetDoc.SubCat = SourceDoc.Category
      TargetDoc.docTitle = "Fax from Faxenmacher ;))"
      
          ' Check for attachment(s) in document
      Dim AttachmentName As String
      Dim newObject As NotesEmbeddedObject
      
      
          ' Save Attachment from Source Document to Disk
          ' and then attach file from disk to Target Document
      
      Set item = SourceDoc.GetFirstItem("$File")
      If Not (item Is Nothing) Then
         ItemType = item.Type
         
         If ItemType = 1084 Then          ' Item Type is
'ATTACHMENT (not absolutely sure because Notes help does not state the
            'integer values of item Types !)
            
            AttachmentName = item.Values(0)
            Set object = Sourcedoc.GetAttachment(AttachmentName )
            Call object.ExtractFile ( "c:\temp\" & AttachmentName)
            
                    ' Create Attachment in DocContent Field from file on disk
            Set rtitem = New NotesRichTextItem( TargetDoc,"DocContent" )
            Set NewObject = rtitem.EmbedObject (EMBED_ATTACHMENT, "", "c:\temp\" & AttachmentName)
            Call TargetDoc.CopyItem( rtItem2, "Body" )            
                    ' Delete temporary files from c:\temp directory
            Kill "c:\temp\" & AttachmentName
            
         End If
      End If
      
      'TargetDoc.Save True,True
      
      Set SourceDoc = view.GetNextDocument( SourceDoc )
      
   'Loop
      TargetDoc.Save True,True
      
      
      
   Loop
   ws.ViewRefresh  
End Sub

Was mach ich da bloß falsch ?

Glombi:
Hi, piccolo: Meff hat recht: Servergestützte Agenten können nur Datenbanken auf dem Server öffnen, auf dem der Agent läuft.
Bei einem servergestützten Agenten muss man als Servername = "" eingeben.
Versuch es mal so:

dim ret as integer
dbserver =""  
Set TargetDB = New NotesDatabase("","")
ret = TargetDB.Open("","faxverteiler.nsf")

if not ret then exit sub

... und hier gehts dann weiter...

Gruß
Andreas

Meff:
Anbei ein Link auf die Knowledge Base zu dem Thema:

http://www.groupcom.de/extern/ibm/lotuskb.nsf/b48a95f9b4a7a68185256c8d0072e04c/0765bf663067489885256cd70068b85b?OpenDocument

Meff

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln