Autor Thema: Personen von einem names zu einem anderen kopieren  (Gelesen 3564 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