Autor Thema: Datum Dokument hinzugefügt  (Gelesen 3517 mal)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Datum Dokument hinzugefügt
« am: 19.07.06 - 12:24:47 »
Hallo zusammen,

ich habe ein Problem:
Einer unserer Vertriebler (wer auch sonst ;D) hat scheinbar seit Urzeiten mal wieder repliziert und uns knapp 16k Dokumente in einer unserer Datenbanken beschert, die eigentlich schon längst archiviert waren. Wie ich in den Dokumenteigenschaften sehe, wird ein Datum "Hinzugefügt" mitgeführt, worauf ich abfragen könnte. Allerdings weiß ich jetzt nicht, wie ich dadran komme. Ich habe weder eine Formel dafür gefunden, noch eine Script-Propertie, noch existiert ein Feld im Dokument, was im Stile von $UpdatedBy oder $Revisions protokolliert. :(
In der Notes-Hilfe habe ich nichts gefunden und meine Suche hier im Forum, hat mir nur einen Thread geliefert, wo angeblich mein gewünschtes Datum per @Created  oder doc.Created ausgegeben wird, was ich allerdings überhaupt nicht nachvollziehen konnte. Dabei wird nur das Datum, wann das Dokument wirklich erstellt wurde, ausgegeben. Hätte mich auch ehrlich gesagt sehr gewundert, wenn dem nicht so gewesen wäre...

Hat einer einen Tip für mich auf lager? Danke vorab!


Gruß Dirk
« Letzte Änderung: 20.07.06 - 11:16:40 von nikon »
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Glombi

  • Gast
Re: Datum Dokument hinzugefügt
« Antwort #1 am: 19.07.06 - 12:37:05 »
Das geht leider nicht - siehe
http://atnotes.de/index.php?topic=23825.0

Andreas

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: Datum Dokument hinzugefügt
« Antwort #2 am: 19.07.06 - 12:43:53 »
Ouh verd****!  >:(

Das ist keine gute Nachricht! Trotzdem danke für Deine Bemühungen.


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Glombi

  • Gast
Re: Datum Dokument hinzugefügt
« Antwort #3 am: 19.07.06 - 12:49:41 »
In der Lotus Developer Domain habe ich was gefunden - wie es scheint geht es doch mit der API:

http://www.lotus.com/ldd/46dom.nsf/c21908baf7e06eb085256a39006eae9f/3184fa2e5a813af580256b61003b2e12?OpenDocument

Die begeisterten Kommentare lassen darauf schließen...

Hier dann die erforderliche Änderung für os/400:
http://www.lotus.com/ldd/46dom.nsf/c21908baf7e06eb085256a39006eae9f/fa1db9d5a88624fc8525703e0052b776?OpenDocument

und ein nützlicher Verweis auf
http://icuelab.com/index/3f888f2e562b4fbb85256c5300668b52

Andreas
« Letzte Änderung: 19.07.06 - 12:53:23 von Glombi »

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: Datum Dokument hinzugefügt
« Antwort #4 am: 19.07.06 - 12:56:48 »
Ouh ouh ouh!
Das schaut wirklich vielversprechend aus. Sogar schon von 2002 der Beitrag?! Naja ich werde das gleich direkt mal ausprobieren. Ich bin gespannt! :) Danke für den Tip!

An dieser Stelle vielleicht noch gerade:
Besteht denn die Möglichkeit so etwas zu verhindern? Gibt es Einstellungen wie lange die DeletionStubs vorgehalten werden? Und/oder kann man ein maximales Replizierintervall vorgeben?
Ob ich dafür einen neuen Thread im Administrationsforum eröffnen solte? ;)


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Datum Dokument hinzugefügt
« Antwort #5 am: 19.07.06 - 13:35:47 »
... man kann mit Replizierformeln arbeiten, um die Replikation zu begrenzen...

Toni
Grüßle Toni :)

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: Datum Dokument hinzugefügt
« Antwort #6 am: 19.07.06 - 14:50:57 »
Zum einen: Ich melde Erfolg! 8)
Der C-API Aufruf war zielführend. Ich werde mir nun einen Agenten stricken, der alle Dokumente durchackert und die "unnötigen" entfernt. Da es wahrscheinlich zuviel verlangt wäre, den "Hinzufüger" noch auslesen zu können, werde ich die Zeit als Anhaltspunkt nehmen. Dabei kommt es mir wenigstens gelegen, dass es nicht in der Hauptarbeitszeit passiert ist!
Nochmal danke Andreas!!

@ata
Ist das meine einzige Chance? Ich bin bisher nicht so der Fan von Replizierformeln gewesen, da wir damals schon viel Ärger mit sowas hatten...
Aber ich werde mal schauen, was sich damit machen lässt.


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Glombi

  • Gast
Re: Datum Dokument hinzugefügt
« Antwort #7 am: 19.07.06 - 19:37:04 »
Das ist ja super, endlich eine Lösung für das Problem - obwohl es ja schon seit Jahren in der LDD schlummert  :o

Was den "Hinzufüger" betrifft: Nun, da sehe ich absolut keine Chance. Denn das ist ja nicht zwingend der letzte Änderer eines Dokuments sondern nur der nette User aus dem Vertrieb, der nach einigen Monaten mal wieder repliziert hat  ;D

Wenn Du den Agenten fertig hast, kannst Du ja mal den Code hier posten. Ich denke dafür machen wir hier auch einen Best Practices Artikel  ;)

Andreas

Offline nikon

  • Junior Mitglied
  • **
  • Beiträge: 97
  • Geschlecht: Männlich
  • Tut das Notes?
Re: Datum Dokument hinzugefügt
« Antwort #8 am: 20.07.06 - 11:16:18 »
Guten Morgen!

Kein Problem - hier ist der Code meines Agenten:

Code
Option Public
Option Declare

Const wAPIModule = "nnotes.dll" ' Windows/32 (Intel)

'Liste der API-Module anderer Systeme:
'Const wAPIModule = "anotes.dll" ' Windows/32 (Alpha)
'Const wAPIModule = "Inotes.dll" ' OS/2v1, OS/2v2
'Const wAPIModule = "libnotes_r.a" ' UNIX (AIX)
'Const wAPIModule = "libnotes" ' OS/390
'Const wAPIModule = "libnotes.so" ' UNIX (Solaris, Linux)
'Const wAPIModule = "libnotes.sl" ' UNIX (HP-UX)
'Const wAPIModule = "NotesLib" ' Macintosh
'Const wAPIModule = "/qsys.lib/qnotes.lib/libnotes.svrpgm" ' OS/400

Const NOTE_ADDED_TO_FILE = 13

Declare Private Function ConvertTIMEDATEToText Lib wAPIModule Alias "ConvertTIMEDATEToText" _
( Byval zI As Long, Byval zT As Long, T As Long, Byval S As String, Byval nS As Integer, nT As Integer) As Integer

Declare Private Function NSFDbOpen Lib wAPIModule Alias "NSFDbOpen" _
( Byval P As String, hDB As Long) As Integer

Declare Private Function NSFDbClose Lib wAPIModule Alias "NSFDbClose" _
( Byval hDB As Long) As Integer

Declare Private Function NSFNoteOpen Lib wAPIModule Alias "NSFNoteOpen" _
( Byval hDB As Long, Byval NoteID As Long, Byval F As Integer, hNT As Long) As Integer

Declare Private Function NSFNoteClose Lib wAPIModule Alias "NSFNoteClose" _
( Byval hNT As Long) As Integer

Declare Private Function NSFNoteGetInfo Lib wAPIModule Alias "NSFNoteGetInfo" _
( Byval hNT As Long, Byval M As Integer, V As Any) As Integer

Declare Private Function OSPathNetConstruct Lib wAPIModule Alias "OSPathNetConstruct" _
( Byval zP As Long, Byval S As String, Byval F As String, Byval N As String) As Integer

Function AddedToFile(doc As NotesDocument) As String
	
	Dim db As String
	With doc.ParentDatabase
		db$ = String$(1024, " ")
		OSPathNetConstruct 0, .Server, .FilePath, db$
	End With
	
	Dim hDB As Long
	NSFDbOpen db$, hDB
	If hDB = 0 Then Exit Function
	
	Dim hNT As Long
	Dim T(1) As Long
	NSFNoteOpen hDB, Clng("&H" & doc.NoteID), 0, hNT
	If Not hNT = 0 Then
		NSFNoteGetInfo hNT, NOTE_ADDED_TO_FILE, T(0)
		NSFNoteClose hNT
		Dim s As String
		s$ = Space(80)
		Dim ns As Integer
		ConvertTIMEDATEToText 0, 0, T(0), s$, 80, ns%
		AddedToFile = Left$(s$, ns%)
	End If
	
	NSFDbClose hDB
	
End Function

Sub Initialize
	
	Dim s As New NotesSession
	Dim cdb As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim rmcol As NotesDocumentCollection
	Dim deadline As NotesDateTime
	Dim docadded As NotesDateTime
	Dim difference As Long
	Dim retval As Integer
	
	Set cdb = s.CurrentDatabase
	Set view = cdb.GetView( "<Ansicht mit gewünschten Dokumenten>" )
	Set doc = view.GetFirstDocument
	Set rmcol = cdb.GetProfileDocCollection( "" )	
	Set deadline = New NotesDateTime( "<Zeitpunkt der Replizierung aus Log>" )
	
	While Not doc Is Nothing
		
		Set docadded = New NotesDateTime( AddedToFile(doc) )
		
		difference = deadline.TimeDifference( docadded ) / 60 ' Timediefference in minutes
		
		If difference >= 0 And difference <= 60 Then ' Add doc to col if added within an hour before deadline
			Call rmcol.AddDocument(doc)
		End If
		
		Set doc = view.GetNextDocument(doc)
		
	Wend
	
	retval = Msgbox( "Möchten Sie wirklich " + Cstr(rmcol.Count) + " Dokumente löschen?", 36 , cdb.Title )
	If retval = 6 Then Call rmcol.RemoveAll(True)
	
End Sub


Es gibt sicher noch andere Ansätze bzw. Verbesserungsmöglichkeiten, wie z.B. das Datum des Einfügens, auch noch mit dem Erstelldatum zu vergleichen, um nicht wirklich an diesem Tag erstellte Dokumente zufällig noch mit zu löschen. Aber für mich war das nicht nötig, da während des Repliziervorgangs unseres Vertrieblers, kein anderer in dieser DB zugange war.

Ich hoffe, ich konnte hiermit auch anderen weiterhelfen.


Gruß Dirk
Zitat von: fragmutti.de
Schmackhafter Milchreis
Milchreis schmeckt hervorragend, wenn man ihn kurz vor dem Verzehr durch ein saftiges Steak ersetzt. ;)

IBM Certified Application Developer - Lotus Notes und Domino 6/6.5

Umgebung:
2 Domino Cluster-Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) SLES 9 SP 3
1 Domino Server (7.0.3) Win2k Server
1 Domino Server (7.0.3) WinXP

~ 200 Notes Clients (7.0.1-7.0.3) Win2k&XP

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Datum Dokument hinzugefügt
« Antwort #9 am: 21.07.06 - 12:41:47 »
Das von dir eingesetzte Verfahren hat einige erhebliche Vorzüge (du packst kein neues Feld in jedes Dokument), aber auch ein paar ganz erhebliche Nachteile:
- du mußt ziemlich blind entscheiden, ob du x Dokumente löschen willst (das kann man verbessern, indem man die Dokumente in einen Ordner verschiebt).
- du mußt dein INITIALIZE jedes Mal auf ein Datum neu festlegen
- es funktioniert nur gut, wenn zum Unglückszeitpunkt keine anderen Aktivitäten in der DB stattfanden

Insofern finde ich deine Lösung eine ganz hervorragende zweitbeste Lösung. Die beste Lösung ist von geradezu unschlagbarer Einfachheit.

Notes vergibt beim Einfügen eines neuen Dokuments in eine Replik eine Note-ID, und diese Note-ID ist immer um genau 4 Zähler höher als die zuletzt vergebene Note-ID.

Wenn man sich eine Ansicht baut, die die Note-ID und das @Created nebeneinanderstellt, kann man mit einem Agenten periodisch daran entlang laufen und sehen, ob die neuen Note-IDs und das CREATED-Datum zusammenpassen. Wenn nicht, handelt es sich höchstwahrscheinlich um Replizierschrott. In manchen Fällen können Dokumente, die per Cut&Paste eingefügt wurden, diese Ordnung stören (dann ist deine Lösung doch wieder die Beste, das muß man von Fall zu Fall entscheiden)

Auf diese Idee brachte mich ein Kollege, der über einem solchen Problem schon einmal schwer gebrütet hat und dem ich (da ich von seinem ehemaligen Problem gewußt habe) den Code des API-PGMs zugesendet hatte.

Gruß

Norbert aus Hanau
« Letzte Änderung: 21.07.06 - 12:55:00 von LN4ever »
Situs vilate in isse tabernit.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz