Domino 9 und frühere Versionen > ND8: Entwicklung
Probleme mit Agent
manderson:
Guten Morgen! ;D
Ich erstelle gerade einen Agent der eine xml Datei schreibt anhand einer NotesDocumentCollection, das klappt auch soweit ganz gut. Problem ist das ich es nicht hinbekomme das in einer Schleife Daten zusammengefasst geschrieben werden. Ich bekomme folgende Struktur als xml.
(Hinweis: einmal itemID & itemText sind jeweils ein Dokument)
<itemID>Farbe</itemID>
<itemText> Blau</itemText>
<itemID>Farbe</itemID>
<itemText>Rot</itemText>
<itemID>Form</itemID>
<itemText>Rund</itemText>
<itemID> Rot</itemID>
<itemText>Farbe</itemText>
Ausgegeben soll aber:
<itemID>Farbe</itemID>
<itemText> Blau</itemText>
<itemText> Rot</itemText>
<itemText> Grün</itemText>
<itemID>Form</itemID>
<itemText>Rund</itemText>
Kann ich irgendwie on „the fly“ das ganze sortieren lassen? Zerbreche mir schon den kopf wie das ganze gehen soll… ???
ascabg:
Hallo,
Ohne den Agenten zu kennen und wie Du die Daten aktuell in das XML-File bekommst, kann man nur mit dem
aktuellen Ergebnis des Agenten keine Mutmassungen anstellen.
Viele wuerden sagen, die Kristallkugel ist gerade zur Reinigung oder Aehnliches.
Andreas
Glombi:
Du hast vermutlich eine Ansicht, in der die Dokumente in der richtigen Reihenfolge sortiert sind. Falls das so ist, musst Du in Deinem Agenten nicht die NotesDocumentCollection sondern die NotesViewEntryCollection nehmen. Die arbeitet die Dokumente in der Reihenfolge der Ansicht ab.
Andreas
manderson:
hmm okay
Das leitet das ganze ein, ich sammle alle Dokumente (aus der View all) in eine Collection anhand eine Maschinen ID. Klappt super ;)
--- Code: ---
Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim dc As NotesDocumentCollection
Dim stream As NotesStream
Dim pathname As String
Dim key As String
Dim vs As string
pathname = "c:\agentenfiles\"
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView( "all" )
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
key = doc.GetItemValue("machineID")(0)
Set dc = view.GetAllDocumentsByKey(key, True)
Set doc = dc.GetFirstDocument
Set stream = session.CreateStream
pathname = pathname & doc.GetItemValue("machineID")(0) & ".xml"
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
--- Ende Code ---
Der Block um den es geht
--- Code: ---While Not ( doc Is Nothing )
If doc.Getitemvalue("itemID")(0) >"" Then
Call stream.Writetext(" <itemID>", )
Call stream.WriteText(doc.GetItemValue("itemID")(0),)
Call stream.Writetext("</itemID>", EOL_CRLF)
Call stream.Writetext("<itemText>",)
Call stream.WriteText(doc.GetItemValue("itemText")(0),)
Call stream.Writetext("</itemText>", EOL_CRLF)
End If
Set doc = dc.GetNextDocument( doc )
Wend
--- Ende Code ---
Es klappt auch alles, nur wie ich es sotiert ausgeben lassen kann ist mir schleierhaft :-:
DerAndre:
Hi,
der Agent macht genau das was Du ihm gesagt hast.
Du musst Dir eine Hilfsvariable nehmen, damit Du den Wechsel der ItemID mitbekommst
und das ganze entsprechend ausprogrammieren.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln