Guten Abend
Zu meinem Problem. Ich habe eine Datenbank, in der werden Informationen über eine Emailadresse angezeigt. z.B:
Server: Server/OU/Firma
Mailfile: Server/OU/Firma/mail\test.nsf
Jetzt haben wir eine Austritte Datenbank und ich muss eine Archivierungsfunktion programmieren. Leider sind meine LS Kenntnisse extrem gering.
Über die Aktion soll Server/OU/Firma/mail\test.nsf mit allen Dokumenten in diese DB kopiert werden Server/OU/Firma/gone\gone.nsf
Ich habe schon ein Skript gefunden nur, das kopiert die lokale Datenbank. Ich möchte aber über das Feld Mailfile angeben können welche DB es kopieren soll in meinem Fall das mail\test.nsf.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set archiveDb = New NotesDatabase(m_server, m_mailfilename)
archiveServer$ = "Server1"
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.CopyToDatabase( archiveDb )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Guten Morgen,
Danke erst mal für die Hilfe.
Es geht darum, das ich von meiner Datenbank aus, ein nsf archivieren kann. Dazu muss ich es von server1 auf server2 kopieren. Das Problem ist für mich ist, es geht nicht um die Datenbank welche den Prozess ausführt. Eigentlich sieht das ganze so aus.
server1: Datenbank, welche den Prozess ausführen soll
server2: Auf diesem Server liegt das nsf
server3: Auf diesen Server soll das nsf kommen
Ich bekomme nie die Datenbank kopiert die ich will. Entweder kopiert es diejenige an der ich am arbeiten bin oder es gibt mir den Fehler aus: Variant does not contain an object.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set NotesDatabase = New NotesDatabase (server1$, dbfile$)
Set archiveDb = New NotesDatabase(server2$, dbfile$)
archiveServer$ = "archibeDb"
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.CopyToDatabase( archiveDb )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
ps: ich meinte damit meinen code den ich gepostet habe. nicht meinen code den ich geschrieben habe.
Wo initialisierst du denn die Variable db ?
...
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
...
Axel
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim NotesDatabase As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set NotesDatabase = New NotesDatabase (server1$, dbfile$)
Set archiveDb = New NotesDatabase(server2$, dbfile$)
archiveServer$ = "archibeDb"
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.CopyToDatabase( archiveDb )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Ach so das meint ihr. Sorry wie schon gesagt ich blicke da absolut nicht durch, und ich muss das als Prüfungsaufgabe bis morgen Abend fertig haben >:( ???
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim NotesDatabase As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set NotesDatabase = New NotesDatabase (server1$, dbfile$)
Set db = NotesDatabase
Set archiveDb = New NotesDatabase(server2$, dbfile$)
archiveServer$ = "archibeDb"
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.CopyToDatabase( archiveDb )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
LS ist zum Glück nicht 5% von der Prüfung. 90% und mehr ist alles Formeln. Darum mache ich mir nicht grosse sorgen. Trotzdem würde es mich freuen wenn ich das Script hinbekommen würde.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = New NotesDatabase ("mail1", "mail\x.nsf")
Set archiveDb = New NotesDatabase("mail2", "x.nsf")
archiveServer$ = archibeDb
archiveFile$ = "archive\"+db.FileName
If (Not(archiveDb.Open(archiveServer$,archiveFiles$))) Then
Set archiveDb = db.CreateCopy (archiveServer$,archiveFile$)
End If
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.CopyToDatabase( archiveDb )
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Dieser Code kopiert mir etwas. Nur finde ich das nsf danach nirgends.