Domino 9 und frühere Versionen > ND9: Entwicklung
Hinzugefügt-Zeitpunkt eines Dokuments ermitteln (LS)
JayDee:
Anwendungsfall: Dokumente werden manuell von Datenbank A nach Datenbank B kopiert (via Zwischenablage, diese Vorgehensweise ist vom Nutzer ausdrücklich so gewollt und ihm auch nicht auszureden), aufgrund der nahezu identischen Schablonen beider Datenbanken (basierend auf "Dokumentenbibliothek") ist dies auch kein Problem.
In Datenbank B läuft nun regelmäßig ein Agent, der u.a. den "Hinzugefügt in Datenbank B"-Zeitpunkt der Dokumente benötigt, also im Dokument-Eigenschaften-Dialog entspräche dies der Zeile "Hinzugefügt (in dieser Datei)".
Ausgerechnet diesen Zeitpunkt bekommt man aber mit der NotesDocument-Klasse nicht ermittelt, sondern nur folgende Zeitpunkte:
NotesDocument.Created (hier wird immer "Erstellt (ursprünglich)" zurückgegeben und nicht "Erstellt (in dieser Datei)"
NotesDocument.LastModified (interessiert nicht)
NotesDocument.LastAccessed (interessiert nicht)
Gibt es eine Möglichkeit, den gewünschten Zeitpunkt mit LS zu ermitteln?
Vermutlich könnte man über QueryPaste von NotesUIView eine eigene Mimik aufsetzen, die eingefügten Dokumente "abfangen" und die Zeitpunkte so selbst merken, aber ich frage mich ob's nicht auch einfacher geht.
TRO:
mit API-Calls.
Aus meiner Grabbelbox:
Const wAPIModule = "NNOTES" ' Windows/32
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
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
s$ = Space(80)
ConvertTIMEDATEToText 0, 0, T(0), s$, 80, ns%
AddedToFile = Left$(s$, ns%)
End If
NSFDbClose hDB
End Function
JayDee:
Super, ich danke vielmals!
eknori (retired):
Ab 9.0.1 gibt es @AddedToThisFile. Funktionier mit Socherheit auch in LS in Verbindung mit evaluate.
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/user/wpd_whatsnew.html
JayDee:
Cool. Danke auch dir!
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln