Domino 9 und frühere Versionen > ND6: Entwicklung
markierte Dokumente einer Ansicht exportieren
scsi:
Hallo,
vielleicht hat jemand eine Idee, woran es liegen könnte.
Ich habe einen kleinen Agenten (anbei ein Test-Script auf das wesentliche reduziert), welcher ganz einfach nur die selektierte Dokumente einer Ansicht exportieren soll.
Jetzt habe ich den Effekt, das ich in einer Ansicht genau die ersten 162 Dokumente so exportieren kann, sind die Dokumente weiter unten in der Ansicht - dann wird ViewEntry nicht gesetzt ?? Gibt es eine Begrenzung für den Array??
Die Ansicht ist über 2 Werte kategorisiert, Mehrfachwerte werden getrennt angezeigt und können vorkommen - werden aber nur einmal exportiert. (ist ok so)
Der Agent sollte möglichst universell sein, daher wollte ich über die ViewEntryCollection gehen.
Sub Initialize
On Error Goto ErrorHandler
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim uivw As NotesUIView
Dim vw As NotesView
Dim vc As NotesViewColumn
Dim vec As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim strViewName As String
Dim strFileName As String
Dim i As Integer
Dim sTemp As String
' zu exportierenden Ansicht
Set uivw = ws.CurrentView
strViewName = uivw.ViewAlias
' Datei für den Export
Dim fileNum As Integer
fileNum% = Freefile()
strFileName = "c:\Temp\Test_" + strViewName & "_" & Format(Now, "dd.mm.yyyy.hh.nn.ss") & ".txt"
Open strFileName For Output As #fileNum%
Set db = s.CurrentDatabase
' ViewEntryCollection aus allen Dokumenten der Ansicht aufbauen
Set vw = db.GetView(strViewName)
Set vec = vw.AllEntries
' Spaltentitel ausgeben
sTemp = ""
Forall vwTitel In vw.Columns
If Not vwTitel.IsHidden Then
sTemp = sTemp + vwTitel.Title + ";"
End If
End Forall
Print #fileNum%, sTemp
' alle markierten Dokumente durchlaufen
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
While Not(doc Is Nothing)
Set entry = vec.GetEntry(doc)
sTemp = ""
' alle Spalten der Ansicht ausgeben
i = 0
Forall vwCol In vw.Columns
If Not vwCol.IsHidden Then
sTemp = sTemp + entry.ColumnValues(i) + ";"
End If
i = i+1
End Forall
Print #fileNum%, sTemp
Set doc = dc.GetNextDocument(doc)
Wend
Close #fileNum%
Print "Fertig"
Exit Sub
ErrorHandler:
Print "Fehlernr.: " + Str$(Err) + ", Zeile: " + Str$(Erl) + ", Meldung: " + Error$
Close #fileNum%
Exit Sub
End Sub
Danke schon mal im voraus.
scsi:
Hallo nocheinmal,
ich habe jetzt einen Verdacht, und zwar habe ich meine kleine Funktion in eine andere DB mit mehreren 100 Dokumenten getestet - und alles klappt prima :o
Also, in der Ansicht, in welcher der Export nicht klappt -- die Ansicht ist zuerst nach Jahr kategorisiert, und als zweites in einer Kategorie "Bereich".
Der Bereich setzt sich aus "Firma\Bereich\Abteilung\Gruppe" zusammen und kann entsprechend tief geschachtelt sein.
Hat jemand dazu eine Idee??
scsi:
Hallo,
jetzt bin ich wieder ein kleines Stückchen weiter gekommen.
Habe mir also eine kleine DB gebaut - nur mit diesem Agenten und ein paar Dokumente eingefügt.
Es ist solange alles gut, wie keine Mehrfachwerte in der Kategorie stehen.
- Selektiert man Dokumente über einem Eintrag mit Mehrfachwerten - alles prima.
- Selektiert man Dokumente mit Mehrfacheintrag --> Zeile 56: Fehler 13: Type Mismatch
- Aber: selektiert man Dokumente UNTER dem Dokument mit dem Mehrfachwert in der Kategorie --> Zeile 56: Fehler 91: Object Variable not set
Wie kann ich das denn umgehen? Ich hoffe, jemand hat dazu eine Idee.
koehlerbv:
Sollen wir jetzt nachvollziehen, wo in Deinem Code (sieht der überhaupt noch so aus wie oben??) die Zeile 56 ist?
Wenn jemand helfen soll: Bitte aktuellen Code posten und betreffende Zeile markieren. Und einen ansprechbaren Namen unter die Postings schreiben - das erhöht die Motivation drastisch (wenn ich mit SCSI reden will, schraube ich eine Festplatte auf ;D)
Bernhard
scsi:
Hallo Bernhard,
danke erst einmal, das Du Dir die Mühe machst. Also der Code sieht noch genauso aus, daran habe ich nichts geändert. habe alles mögliche an Ansichtseigenschaften an- bzw. ausgeschaltet, also z.B. aktualisierungs-Eigenschaften und koprimieren ja/nein - alles bringt keine Änderung
Ich denke das Problem liegt in der Zeile
<Set entry = vec.GetEntry(doc)>
aus irgendeinem Grund bekomme ich das Objekt bei Mehrfachwerten in der Ansicht nicht.
anbei nochmal den entsprechenden Teil des Agenten, Zeile 56 habe ich rot markiert.
--- Code: --- ' alle markierten Dokumente durchlaufen
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
While Not(doc Is Nothing)
Set entry = vec.GetEntry(doc)
sTemp = ""
' alle Spalten der Ansicht ausgeben
i = 0
Forall vwCol In vw.Columns
If Not vwCol.IsHidden Then
[color=red]sTemp = sTemp + entry.ColumnValues(i) + ";"[/color]
End If
i = i+1
End Forall
Print #fileNum%, sTemp
Set doc = dc.GetNextDocument(doc)
Wend
--- Ende Code ---
Danke nochmal
Silke
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln