Okay habe mein script auf die GetAllEntriesByKey methode umgestellt, damit die ausgewählten Dokumente wie in der Ansicht ausgegeben werden. Klappt auch fast
Die Werte aus dem ersten Dokument für die ersten Einträge, für meine xml, schreibt er auch brav in die XML datei. Doch irgendwie springt er nicht zum nächsten dokument mit Getnextentry.....
Hier mal der Anfang
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim vc As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim stream As NotesStream
Dim pathname As String
Dim vs As String
pathname = "c:\agentenfiles\"
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView("all")
Set vc = view.GetAllEntriesByKey("meinKEY")
Set entry = vc.GetFirstEntry
Set doc=entry.Document
Set stream = session.CreateStream
pathname = pathname & "test.txt"
If Dir$ (pathname) <> "" Then
Kill pathname
End If
If Not stream.Open(pathname, "utf-8") Then
MessageBox pathname,, "Open failed"
Exit Sub
End If
If stream.Bytes <> 0 Then
MessageBox pathname,, "File already exists and has content"
Exit Sub
End If
Folgendes schreibt er mir auch in die xml datei, sprich er greift also auf das erste Dokument zu.
Call stream.Writetext("<?xml version=""1.0"" encoding=""UTF-8""?>", EOL_CRLF)
Call stream.Writetext("<machinelist>", EOL_CRLF)
Call stream.Writetext(" <machine>", EOL_CRLF)
Call stream.Writetext(" <machineID>",)
Call stream.WriteText(doc.GetItemValue("machineID")(0),)
Call stream.Writetext("</machineid>", EOL_CRLF)
Call stream.Writetext(" <machineManufacturer>",)
Call stream.WriteText(doc.GetItemValue("machineManufacturer")(0),)
Call stream.Writetext("</machineManufacturer>", EOL_CRLF)
Call stream.Writetext(" <machineName>",)
Call stream.WriteText(doc.GetItemValue("machineName")(0),)
Call stream.Writetext("</machineName>", EOL_CRLF)
Doch beim diesen Block kommt nichts mehr,
Do until ( entry Is Nothing )
If doc.Getitemvalue("highlight_de")(0) >"" Then
Call stream.Writetext(" <highlight>", EOL_CRLF)
Call stream.Writetext(" <de>",)
Call stream.WriteText(doc.GetItemValue("highlight_de")(0),)
Call stream.Writetext("</de>", EOL_CRLF)
Call stream.Writetext(" <en>",)
Call stream.WriteText(doc.GetItemValue("highlight_en")(0),)
Call stream.Writetext("</en>", EOL_CRLF)
Call stream.Writetext(" </highlight>", EOL_CRLF)
End If
Set entry = vc.Getnextentry( entry )
loop
Auch als While Block funktioniert das ganze nicht.
While Not ( entry Is Nothing )
If doc.Getitemvalue("highlight_de")(0) >"" Then
Call stream.Writetext(" <highlight>", EOL_CRLF)
Call stream.Writetext(" <de>",)
Call stream.WriteText(doc.GetItemValue("highlight_de")(0),)
Call stream.Writetext("</de>", EOL_CRLF)
Call stream.Writetext(" <en>",)
Call stream.WriteText(doc.GetItemValue("highlight_en")(0),)
Call stream.Writetext("</en>", EOL_CRLF)
Call stream.Writetext(" </highlight>", EOL_CRLF)
End If
Set entry = vc.Getnextentry( entry )
Wend
Irgendwie springt er nicht zum nächsten Dokument. Dabei sind die Daten/Werte im "2" Dokument vorhanden und in der Ansicht (all) ist auch die Reihenfolge stimmig...
was mache ich also verkehrt?