Domino 9 und frühere Versionen > ND8: Entwicklung

Probleme mit Agent

(1/3) > >>

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