Domino 9 und frühere Versionen > ND8: Entwicklung

Personen von einem names zu einem anderen kopieren

(1/2) > >>

botschi:
Hallo,

ich habe ein Script gebaut, welches Personen und Gruppen von einem names.nsf zu einem anderen names.nsf kopiert.

An sich funktioniert das auch- bei 5 von 10 versuchen.
Ich bekomme hin und wieder den Fehler (mal bei einer Gruppe, mal bei einer Person):
"Notes-Fehler: Eini anderer Benutzer hat dieses Dokument zur gleichen Zeit geändert (names.nsf).

Greift Lotus mir dazwischen?
Das Data-Verzeichnis liegt (ENTGEGEN unserer Empfehlungen auf einem Netzlaufwerk).

Habt ihr sowas schon einmal gemacht und einen Tipp für mich?
Danke!

Matthias

EDIT:
Laut den Eigenschaften der Dokumente, wurden diese seit laaaanger Zeit nicht geändert.

m3:
Du sprichst hoffentlich von der Names.nsf eines Clients und nicht von der am Server, oder?
Zeig mal den Code, da wirst Du wo 2x speichern.

botschi:
Ja klar  ;D

Sorry...

Matthias

koehlerbv:
Es wäre schön, wenn Du ein paar nähere Angaben machen würdest:
Da Du vom NAMES.NSF und einem Netzlaufwerk sprichst, gehe ich von einem PERSNAB aus. Richtig?
Und wenn es dann noch etwas Code geben würde ...

Bernhard

botschi:
Ich schäme mich für den gefrickelten Kot  :-[
Egal...


--- Code: ---Sub Initialize

Dim ziel As NotesDatabase
Dim quelle As NotesDatabase
Dim s As New NotesSession

Dim zielpfad As String
Dim quellpfad As String

zielpfad = "P:\data\names.nsf"
quellpfad = "P:\lotus\names.nsf"
Print "Start"
'###########################
' ziel und quell-db finden
Set ziel = s.GetDatabase("",zielpfad)
If ziel Is Nothing Then
Exit Sub
End If

Set quelle = s.GetDatabase("",quellpfad)
If quelle Is Nothing Then
Exit Sub
End If
'###########################
Dim quellcoll As NotesViewEntryCollection
Dim zielcoll As NotesViewEntryCollection
Dim doc As NotesDocument
Dim ndoc As NotesDocument
Dim entry As NotesViewEntry
Dim nentry As NotesViewEntry
Dim personview As NotesView

' alle doks in der ziel-db löschen, sowohl gruppen als auch kontakte
' kontakte
Set personview = ziel.GetView("People")
Set zielcoll = personview.AllEntries
If Not zielcoll.Count = 0 Then
Call zielcoll.RemoveAll(True)
End If
Print "Kontakte im Ziel gelöscht"
' gruppen
Set personview = ziel.GetView("Groups")
Set zielcoll = personview.AllEntries
If Not zielcoll.Count = 0 Then
Call zielcoll.RemoveAll(True)
End If
Print "Gruppen im Ziel gelöscht"
Stop
' alle doks aus der quelle in das ziel schieben
Set personview = quelle.GetView("People")
Set quellcoll = personview.AllEntries
If quellcoll.Count = 0 Then
Print "Es gibt keine Kontakte zu kopieren"
Goto gruppen
End If
' anlegen
Set entry = quellcoll.GetFirstEntry
Set doc = entry.Document
Do
Print "Kopiert Kontakt " & doc.lastname(0)
Call doc.CopyToDatabase(ziel)

Set nentry = quellcoll.GetNextEntry(entry)
If Not nentry Is Nothing Then
Set entry = nentry
Set ndoc = nentry.Document
Set doc = ndoc
Else
Exit Do
End If
Loop Until doc Is Nothing

Set doc = Nothing
Set entry = Nothing

Print "Fertig mit den Kontakten"
Stop
gruppen:
Set personview = quelle.GetView("Groups")
Set quellcoll = personview.AllEntries
If quellcoll.Count = 0 Then
Print "Es gibt keine Gruppen zu kopieren"
Goto weiter
End If
Set entry = quellcoll.GetFirstEntry
Set doc = entry.Document
Do
If doc.listname(0) = "LocalDomainServers" Or doc.listname(0) = "OtherDomainServers" Then
Goto gr_weiter
End If
Print "Kopiert Gruppe " & doc.listname(0)
Call doc.CopyToDatabase(ziel)
gr_weiter:
Set nentry = quellcoll.GetNextEntry(entry)
If Not nentry Is Nothing Then
Set entry = nentry
Set ndoc = nentry.Document
Set doc = ndoc
Else
Exit Do
End If
Loop Until doc Is Nothing

Print "Fertig mit den Kontakten"



weiter:
Print "Fertig"
Exit Sub

End Sub
--- Ende Code ---

Matthias

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln