2017-01-18 14 views
0

Ich brauche den Export in Excel-Dokumente zwischen zwei Daten aus Sicht. Ich habe NotesDocumentCollection basierend auf NotesDateRange erstellt.LotusScript-Export nach Excel von NotesDocumentCollection

Ich habe Problem mit:

ForAll colval In doc.Columnvalues 

Es ist funktioniert gut, wenn doc von Notesview ist, aber ich brauche Dokumente zwischen zwei Daten so doc von NotesDocumentCollecion ist und dann ich „Konflikt“ Typenfehlermeldung erhalten.

Stück Code mit doc aus Notesview, der Arbeit ist in Ordnung:

Set doc = view.Getfirstdocument() 
row% = 0 
While Not doc Is Nothing 
    row% = row% + 1 
    col% = 0 'Reset the columns 
    ForAll colval In doc.Columnvalues 
     col% = col% + 1 
     xlSheet.Cells(row%,col%).value = colval 
    End ForAll 
Set doc = view.Getnextdocument(doc) 
Wend` 

Stück Code mit doc aus NotesDocumentCollection, wo ich "Typenkonflikt" Fehler in ForAll Linie erhalten:

Set doc = dc.Getfirstdocument() 
row% = 0 
While Not doc Is Nothing 
    row% = row% + 1 
    col% = 0 'Reset the columns 
    ForAll colval In doc.Columnvalues 
     col% = col% + 1 
     xlSheet.Cells(row%,col%).value = colval 
    End ForAll 
Set doc = dc.Getnextdocument(doc) 
Wend` 

niemand wissen, wie man aus NotesDocumentCollection nach Excel exportiert?

Antwort

0

Eine Dokumentensammlung hat keine Spalten. Es ist eine Sammlung von Dokumenten, also macht Ihr Vorfall keinen Sinn. Sie können nicht auf Dokumentfelder als Ordinalzahl zugreifen, wie Sie es gerade tun. Sie müssen die Namen der Felder kennen, auf die sich jede der Spalten bezieht, oder wenn die Spalte eine Formel ist, berechnen Sie sie selbst. Beispiel:

xSheet.Cells(row,1).value = doc.firstname(0) 
xSheet.Cells(row,2).value = doc.lastname(0) 

Eine Option könnte sein, ein Array von Feldnamen einzurichten. Zum Beispiel:

dim fieldnames(10) as string 
fieldnames(0) = "firstname" 
fieldnames(1) = "lastname" 
' etc. 

, dass Sie etwas tun, wie würde es ermöglichen:

for I = 0 to ubound(fieldnames) 
    xlSheet.Cells(row, I) = doc.getItemValue(fieldnames(I)) 
next I 
+0

"Eine Dokumentensammlung hat keine Spalten" - es tut wenn th Die Sammlung wurde aus einer Ansicht gewonnen, zB view.getalldocumentsbykey – user2808054

+0

Danke für Ihre Antwort. Jetzt ist mir klar, dass die Dokumentensammlung keine Spalten hat. Es muss eine Dokumentensammlung sein, weil ich Dokumente basierend auf dem Datumsbereich brauche. Was halten Sie von einem anderen Ansatz zur Lösung dieses Problems: 1. Holen Sie sich die erste Dokumentensammlung basierend auf Datumsbereich. 2.In "während nicht Dokument ist nichts" Schleife: erhalten UNID dieses Dokuments, get tempDoc byKey (UNID) aus Sicht welche erste Spalte ist UNID, In Forall-Schleife erhalten alle spaltenvalues ​​von tempDoc, nächsten Dokument aus der Dokumentensammlung. 3. Am Ende sort xls Blatt von ausgewählten Spalte. – user1879229

+0

Ich nehme an, Sie könnten es so machen, aber es klingt kompliziert und hat das Potenzial, ein Leistungsschwein zu sein. Ehrlich gesagt, wenn ich es wäre, würde ich dem Formular selbst berechnete Felder hinzufügen. Dann wären die Formeln für die berechneten Felder die Formeln, die Sie in den Ansichtsspalten verwenden würden (und optional können Sie Ihre Ansicht ändern, um die berechneten Felder ebenfalls zu verwenden.) Auf diese Weise ist es einfach, Ihre Dokumentensammlung und die Daten zu erhalten Sie wollen, ohne zusätzliche Lookups zu tun. – Duston

-1

Hilfe für Column. „Read-only Eine Reihe von Werten, von denen jedes Element entspricht einen Spaltenwert In der übergeordneten Ansicht des Dokuments ist der erste Wert im Array der Wert, der in der ersten Spalte der Ansicht für das Dokument angezeigt wird, der zweite Wert in der zweiten Spalte usw. Der Wert für jedes Element der Klasse Array ist das Ergebnis der entsprechenden Spaltenformel und der Elemente im aktuellen Dokument Einige Elemente im Array haben möglicherweise keine Wert.

Wenn Sie nicht das Dokument über eine Sicht zugreifen, hat diese Eigenschaft keinen Wert.“

doc.Columnvalues ​​IS auf Dokumente in einem notesdocumentcollection, aber nur, wenn diese Sammlung wurde über eine Ansicht zB bevölkerten using view.getalldocumentsbykey().

So gibt es nicht genug Informationen in Ihrer Frage: Wie erhalten Sie die Dokumentensammlung? Wenn es eine FTSearch ist, dann würde das keine Ansicht beinhalten, so dass keine Spaltenwerte existieren würden

+0

bitte erklären Sie den Downvote – user2808054