Autor Thema: Personen von einem names zu einem anderen kopieren  (Gelesen 3645 mal)

botschi

  • Gast
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.
« Letzte Änderung: 22.04.10 - 11:16:08 von botschi »

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Personen von einem names zu einem anderen kopieren
« Antwort #1 am: 21.04.10 - 18:02:35 »
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.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

botschi

  • Gast
Re: Personen von einem names zu einem anderen kopieren
« Antwort #2 am: 21.04.10 - 18:03:21 »
Ja klar  ;D

Sorry...

Matthias

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Personen von einem names zu einem anderen kopieren
« Antwort #3 am: 21.04.10 - 18:03:56 »
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

  • Gast
Re: Personen von einem names zu einem anderen kopieren
« Antwort #4 am: 21.04.10 - 18:05:46 »
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

Matthias

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Personen von einem names zu einem anderen kopieren
« Antwort #5 am: 21.04.10 - 19:55:52 »
Ich würde nach den View-Operationen ein "notesView.Refresh" spendieren.

CopyToDatabase liefert das neue Notes-Dokument zurück. Anstelle des "Call ..." würde ich den Rückgabewert auf "Is Nothing" überprüfen, ...
Dann weißt Du zumindest, wo(ran) er gescheitert ist.

HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Glombi

  • Gast
Re: Personen von einem names zu einem anderen kopieren
« Antwort #6 am: 21.04.10 - 20:29:52 »
Soweit ich weiß soll das mit 8.5.2 eine Standardfunktion sein: "Sende Kontakt an andere User" oder sowas in der Art. Vielleicht ist dann damit der "gefrikelte Kot" nicht mehr nötig.

botschi

  • Gast
Re: Personen von einem names zu einem anderen kopieren
« Antwort #7 am: 22.04.10 - 11:15:42 »
Auf die neue Version können wir nicht warten...
Ich habs jetzt mit CopyAllItmes gemacht. Funktioniert einwandfrei. Bei 10 versuchen, 10 Treffer.

Ist auch nur eine einmalige Sache bei 50 Usern. Ich schicke denen ne Mail mit dem Button und fertig.
Keine dauerhafte automatische Lösung.
Denn hätte ich auch mehr Herzblut investiert  ;D

Danke für die Tipps!


Matthias

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz