Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: piccolo am 27.06.03 - 14:50:55
-
was soll das bitte bedeuten ?
: Cannot open databases on machines other than the server running your program (***Server**\Verzeichniss\faxverteiler.nsf)
-
Hi,
stell mal den Code rein.
Vermute mal, dass Du den Servernamen als Konstante in einer Function mitgibst anstatt sowas wie "db.server"
-
Wenn Du mittels eines Serverbasierten Agents versuchst, eine Datenbank auf einem anderen Server zu öffnen, dann erhälst Du diese Fehlermeldung. Das geht leider erst ab R6. Wenn Du sowas mit R5 machen möchtest, dann muss der Agent auf dem Client laufen.
Meff
-
Hi,
das ist mir aber neu.
Dann würden unsere Anwendungen nicht mehr laufen oder ich habe gute Programmierarbeit geleistet.
-
... dein Code würde mich wirklich interssieren - ich bin nämlich ebenfalls Meff's Meinung - mit einem Agenten in DB A auf einem Server A kann ich in einer Datenbank B auf einem Server B keinen Agenten starten - ist erst ab Version 6 möglich - eines der neuen Features - daher würde mich interssieren, wie du das machst...
ata
-
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 ?
-
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
-
Anbei ein Link auf die Knowledge Base zu dem Thema:
http://www.groupcom.de/extern/ibm/lotuskb.nsf/b48a95f9b4a7a68185256c8d0072e04c/0765bf663067489885256cd70068b85b?OpenDocument
Meff