Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Gandhi am 02.05.06 - 14:48:23

Titel: Added to this database
Beitrag von: Gandhi am 02.05.06 - 14:48:23
Hi,
fällt jemandem ein, wie ich das Flag 'Added to this database' eines Dokuments auslesen kann?
Titel: Re: Added to this database
Beitrag von: Glombi am 02.05.06 - 15:25:18
Dafür gibts leider keine Methode oder Formelsprachen befehl  :(

Andreas
Titel: Re: Added to this database
Beitrag von: koehlerbv am 02.05.06 - 15:32:11
Ich werde auch in der API-Referenz nicht fündig. Kann das jemand bestätigen oder suche ich an der falschen Stelle?

Bernhard
Titel: Re: Added to this database
Beitrag von: Gandhi am 02.05.06 - 16:26:44
Naja, über C-Api gibt es zumindest die Header Informationen - gehe mal davon aus, dass es darin steht und versuchen da was rauszubekommen.
Ansonsten gibt es das Tag via DXL - aber das ist meine unbrauchbarste Option.
Titel: Re: Added to this database
Beitrag von: Tode am 03.05.06 - 16:13:43
für "Added" gibt es keine Funktion, für "Modified in this file" kann man sich (momentan) einen Bug zu Nutze machen:

doc.LastModified liefert nämlich -fälschlicherweise- diesen Wert anstelle des Tatsächlichen Änderungswertes, den @Modified zurückliefert.

nur so nebenbei bemerkt, auch wenn es für diese Frage keine Antwort ist...

Tode
Titel: Re: Added to this database
Beitrag von: Gandhi am 03.05.06 - 19:16:17
Nun - alles nur Nullen und Einsen...
Nachdem ich mich stundenlang in den Tiefen der Undokumentation der C-Api erfolglos frustriert habe, bin ich dann doch zu einem DXL Versuch übergegangen, der erfolgreich war.
Anbei das Script - falls jemand mal ein ähnliches Problem hat - oder es verbessern möchte (ich möchte anmerken, dass ich mir vollkommen bewusst bin, dass elegant etwas anderes ist - und absolut gewillt etwas über das Parsen in XML zu lernen).
Code

Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	Dim dc As notesdocumentcollection
	Set dc=db.unprocesseddocuments
	
	Dim exporter As NotesDXLExporter
	Set exporter = session.CreateDXLExporter
	Dim i As Integer
	Dim dxl As String
	Dim doc As notesdocument
	Dim added As String
	On Error Goto nextloop
	For i=1 To dc.Count
		Print Str(i) & " von " & Str(dc.Count)
		Set doc=dc.GetNthDocument(i)
		dxl=exporter.Export(doc)
		added=getAdded(dxl)
		doc.addedToThisFile=added
		Call doc.Save(True, False, True)
nl:
	Next
	Stop
	Exit Sub
	
nextloop:
	Resume nl
End Sub

Function getadded(dxl As String) As String
	
	Dim step1 As String
	Dim step2 As String
	Const END1=|</addedtofile>|
	Const END2=|</datetime>|
	Const START1=|<addedtofile>|
	Const START2=|<datetime>|
	Const START3=|<datetime dst='true'>|
	
	step1=Strright(Strleft(dxl,END1),START1)
	step2=Strright(Strleft(step1,END2),START2)
	
	If step2="" Then
		step2=Strright(Strleft(step1,END2),START3)
	End If
	Dim yearstring As String
	Dim monthstring As String
	Dim daystring As String
	yearstring=Left(step2,4)
	monthstring=Right(Left(step2,6),2)
	daystring=Right(Left(step2,8),2)
	getadded=daystring & "." & monthstring & "." & yearstring
End Function



Ach ja, das ist ein Agent.

Titel: Re: Added to this database
Beitrag von: Tode am 04.05.06 - 10:09:16
danke für den Code, der kommt gleich in meine "interne KB". Erst letze Woche hätte ich genau das gebrauchen können.
Ob der jetzt "schön" ist oder nicht: er erfüllt mit relativ wenigen Zeilen code einen Zweck, der sonst nicht so einfach gewesen wäre....

Danke nochmal.

Tode