Domino 9 und frühere Versionen > ND6: Entwicklung

nsf auf anderen server kopieren

(1/4) > >>

judicious:
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.


--- Code: ---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
--- Ende Code ---

HH:
Schau dir einmal db.CreateCopy, db.AllDocuments und copyToDatabase an.

Hubert

judicious:
Ja danke habe ich ja wie du in meinem Code siehst.  ;)

koehlerbv:

--- Zitat von: judicious am 13.03.06 - 16:52:41 ---... Leider sind meine LS Kenntnisse extrem gering ...
... Ich habe schon ein Skript gefunden ...
--- Ende Zitat ---


--- Zitat von: judicious am 13.03.06 - 21:02:33 ---Ja danke habe ich ja wie du in meinem Code siehst.  ;)
--- Ende Zitat ---

Was nun? Dein Code ... oder "gefunden"?

Was mir unklar ist: Warum versuchst Du Dich an einer Aufgabe, die an sich nicht das grosse Problem darstellt, wenn Du aber von den Methoden noch keinen Plan hast? Zudem, da die DB doch sowieso existiert und auch daher mit anderen Mitteln kopiert werden könnte. Die so gewonnene Zeit könntest Du erstmal nutzen, LotusScript strukturiert zu lernen.

Weiterhin:

--- Zitat von: judicious am 13.03.06 - 16:52:41 ---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
--- Ende Zitat ---

Diese Datenbank hat doch jeder - es ist die NAMES.NSF auf dem Server.

Wenn Du trotzdem diesen Weg des "Gefrickels" weitergehen willst, dann solltest Du Dir (mindestens) folgende Zeilen anschauen und umstellen:

Set db = session.CurrentDatabase
Das öffnet nicht (zwangsläufig) die "lokale Datenbank", sondern prinzipiell die, die gerade offen ist. Siehe daher
Set notesDatabase = New NotesDatabase (server$, dbfile$)

Ferner:
Set archiveDb = New NotesDatabase(m_server, m_mailfilename)
Das ist ganz schlecht, wenn man Code postet: Weder sind m_Server noch m_mailfilename in "Deinem" Code als Variable deklariert, noch ist ersichtlich, wie diesen Werte zugewiesen wurden.

Mein Ratschlag:
Denke zunächst erstmal darüber nach, wie Du prinzipiell zukünftig weiter vorgehen willst, um Deinen Wissensstand zu erhöhen. "Finde" keinen Code und verwende ihn gleich - das kann verheerend sein (ist es dann auch meist). Gehe strukturiert vor. Stelle dann hier konkrete Fragen. Hier wird man Dir dann auch gerne helfen. Aber nicht zu "gefundenem Code", zu dessem Hintergrund Deine Kenntnisse "extrem gering" sind.

Bernhard

judicious:
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.


--- Code: ---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
--- Ende Code ---


ps: ich meinte damit meinen code den ich gepostet habe. nicht meinen code den ich geschrieben habe.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln