Domino 9 und frühere Versionen > ND6: Entwicklung
Kategorien in Ansicht auswerten
(1/1)
scipio:
Guten Tag.
Wir haben eine DB mit ca. 250 000 Dokumenten, also nicht sonderlich performant. In einer Ansichtsauswahl steckt eine ziemlich komplexe Formel, die diese Dokumente in der 1. Spalte kategorisiert. In der 2. Spalte gibt's ne einfache Spaltensumme. Bisher drücken die Kollegen 1 - 2 mal im Monat auf eine Aktion (@Command([ViewShowOnlyCategories])) und exportieren dann die Daten (Kategorie & Summe) nach Excel. Das dauert natürlich ein wenig.
Mein Chef fragt nun, ob nicht ein Agent täglich nach Feierabend diese Ansicht abgrasen kann. Dieser soll nur die Kategorie und die Summe neben der Kategorie auslesen und in eine Textdatei schreiben.
Meine Frage: Gibt es überhaupt eine Möglichkeit, die Ansicht dementsprechend anzufassen (liefere mir nur die Kategorien in Spalte 1 und die Zahl daneben in Spalte 2)? Habe mir mal die View-Klassen angeschaut: 'ne Idee hatte ich leider nicht.
Gruß
Thomas
klaussal:
Die Spaltensummen stehen nicht im Dokument. Die Berechnung müsste also der Agent machen.
Glombi:
Da geht ziemlich einfach mit folgendem Script:
Dim kat As Variant
Dim summe As Variant
kat = Evaluate( |@DbColumn("";"";"Ansichtsname";1)| )
summe = Evaluate( |@DbColumn("";"";"Ansichtsname";2)| )
kat und summe sind dann jeweils Arrays. summe hat ein Element mehr, nämlich die Gesamtsumme.
Andreas
scipio:
@Andreas
Super, danke, genau das was ich suche. Evaluate, ja natürlich!
Thomas
0xse:
Hier mal ein Auszug aus einem LS Code den ich für einen ODBC Export geschrieben hab. Sollte leicht anzupassen sein :)
--- Code: ---
Dim nav As NotesViewNavigator
Set db = session.CurrentDatabase
Set view = db.GetView(qvw)
Print "Aktualisiere Quellansicht"
Call view.refresh
Set nav = view.CreateViewNav
Dim e As notesviewentry
qry.SQL = "SELECT * FROM " & tbln
status = result.Execute
i=0
Set e = nav.GetFirst
While Not (e Is Nothing)
i = i +1
If e.ColumnValues(0) <> "" Then
Print e.ColumnValues(0) & " - " & i
result.AddRow
status = result.setvalue("Account",e.ColumnValues(0))
status = result.setvalue("ClientPortDNIS",cpd)
status = result.setvalue("Bytes",e.ColumnValues(2))
status = result.setvalue("Minuten",e.ColumnValues(3))
result.UpdateRow
End If
Set e = nav.GetNextCategory(e)
Wend
--- Ende Code ---
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln