Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: SamB am 13.11.12 - 10:45:41
-
Hallo zusammen,
ich habe ein rel. einfaches Problem, finde aber in meiner Ungeschicktheit hier im Forum keine entsprechende Lösung (die ist wohl da, finde sie nur nicht) daher mein Post.
Wir haben bei uns in der Firma das Problem, das nach einer Migration auf dem Client 2 lokale Adressbücher vorhanden sind, ein gesichertes names.nsf in einem Backup Verzeichnis und eines in Data Verzeichnis. Ich solte nun ein Script haben, das mir alle Adressbucheinträge vom alten Adressbuch ins neue Adressbuch kopiert. Ist sicher nicht eine grosse Sache, könnt ihr mich in die richtige Richtung lenken, ev. mit einem Code Ausschnitt? Ich stehe auf dem Schlauch...
Herzlichen Dank!
-
Einfach nur Copy + Paste ?
-
genau, soweit bin ich auch schon. Nein, muss via Script passieren ;D
-
warum ?
-
Hallo,
Na wenn die Adressbucher imme rim gleichen Pfad liefen ist das doch auch mit dem Script kein
Hexenwerk.
Mal so als Stichwort sei genannt: NotesDocument.CopyToDatabase
Andreas
-
warum ?
richtige Frage. Wie gesagt, wir haben ein Script in KIX entwickelt, das einen verkorxten Notes Client neu "initialisiert", sprich die Userkonfiguration. Hierzu wird das alte Notes Data umbenannt und Lotus Notes via COM Aufrufe neu konfiguriert. Lokales Replica, Connection Documents, Archive, etc. Was mir nun noch fehlt, ist die Möglichkeit, die alten Adressbucheinträge ins neu erstellte Names.nsf zu übernehmen. Und ja, ich oute mich, dass ich zwar rel. gut mit KIX und VBA scripten kann, aber von NotesScript nicht sehr viel Ahnung habe.
Es gäbe ja die Möglichkeit, die lokalen Adressen mit dem Server zu replizieren, sprich dies via Policy zu erzwingen, aber aus einem mir derzeit nicht plausiblen Grunde scheuen sich unsere Notes Admins, diese Policy zu aktivieren...
-
Es gäbe ja die Möglichkeit, die lokalen Adressen mit dem Server zu replizieren, sprich dies via Policy zu erzwingen
Was meinst Du denn damit.
Im 8-er Client hast Du die Moeglichkeit automatisiert die Adressen (Personen, Gruppen) aus dem pers. Adressbuch (names.nsf im DATA-Verzeichnis) in das Mailfile zu synchen.
Damit kommst Du aber nicht an die Daten aus dem 'alten' Adressbuch heran.
Andreas
-
Hallo,
Na wenn die Adressbucher imme rim gleichen Pfad liefen ist das doch auch mit dem Script kein
Hexenwerk.
Mal so als Stichwort sei genannt: NotesDocument.CopyToDatabase
Andreas
Das war der Hint, den ich gebraucht habe! Ich denke nicht, das je jemand von euch sowas in KIX benötigt, aber man weiss ja nie :)
; ---------------------------------------------------------------------------------------------------
; Copy all contacts and local groups from one to another local address book
; ---------------------------------------------------------------------------------------------------
Function RestoreAddressbookEntries($oNotesSession, $FromNabPath, $ToNabPath)
Dim $oSourceDB
Dim $oTargetDB
Dim $ContactsView
Dim $Contact
Dim $GroupsView
Dim $Group
Dim $Ret
;
$oSourceDB = $oNotesSession.GetDatabase("", $FromNabPath)
$oTargetDB = $oNotesSession.GetDatabase("", $ToNabPath)
; ---------------------------------------------------------------------------------------------------
; Verify if The NAB is Open, If Not, Open it
; ---------------------------------------------------------------------------------------------------
If Not ($oSourceDB.isopen)
$Ret = $oSourceDB.open("", $oSourceDB.filename)
If @ERROR <> 0
$Ret = LogMessage("Unable to open source DB " + $FromNabPath + " to copy local contacts from!", "", "F")
Exit
EndIf
EndIf
If Not ($oTargetDB.isopen)
$Ret = $oTargetDB.open("", $oTargetDB.filename)
If @ERROR <> 0
$Ret = LogMessage("Unable to open target DB " + $ToNabPath + " to copy local contacts from!", "", "F")
Exit
EndIf
EndIf
; ---------------------------------------------------------------------------------------------------
; now copy the contacts to the new NAB
; ---------------------------------------------------------------------------------------------------
$ContactsView = $oSourceDB.getview("My Contacts")
$Contact = $ContactsView.GetFirstDocument
While @Error = 0
$Ret = $Contact.CopyToDatabase($oTargetDB)
If @ERROR <> 0
$Ret = LogMessage("error " + @SERROR + " occured during restore of a contact", "", "W")
EndIf
$Contact = $ContactsView.GetNextDocument($Contact)
Loop
; ---------------------------------------------------------------------------------------------------
; do the same with the groups...
; ---------------------------------------------------------------------------------------------------
$GroupsView = $oSourceDB.getview("Groups")
$Group = $GroupsView.GetFirstDocument
While @Error = 0
$Ret = $Group.CopyToDatabase($oTargetDB)
If @ERROR <> 0
$Ret = LogMessage("error " + @SERROR + " occured during restore of a contact", "", "W")
EndIf
$Group = $GroupsView.GetNextDocument($Group)
Loop
EndFunction
-
Denk aber auch an evtl. lokal gespeicherte Gruppen. Wenn die weg sind, gibt's durchaus User, die einen dann hauen wollen.
Jan
-
Warum wird eigentlich jedes Dokument zweimal in die TargetDB gekippt?
Bernhard
-
...weil ich doof bin? Danke für den (für mich peinlichen) Tipp, hab's in der Zwischenzeit korrigiert. Zu meiner Verteidigung kann ich noch sagen, dass ich den Fehler bei mir im Script schon vorher gefunden hatte, aber trotzdem...