Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("By Category")
view.AutoUpdate = False
Set vc = view.AllEntries
Messagebox vc.Count
ungetestet aus der noteshilfe
grüße David
Na dann nimm passe ich meinen Code doch wie folgt an:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("By Category")
view.AutoUpdate = False
view.GetAllEntriesByKey(DATUMSSTRING)
Messagebox vc.Count
Jetzt braucht Du nur noch den DATUMSSTRING zu setzen
Dim todaysdate As New NotesDateTime("Today")
Dim dateTime As New NotesDateTime(todaysdate.DateOnly)
Dim keyarray(0) As Variant
Set keyarray(0) = dateTime
view.AutoUpdate = False
Set vc = view.GetAllEntriesByKey(keyarray, true)
Print vc.Count
gibt leider 0 zurück, obwohl da allein von heute Dokumente im dreistelligen Bereich existieren.
Zudem die Frage, wie ich auch nach nur dem Monat suchen kann.
Vielen Dank für den Tipp Peter, das ist sicher eine gute Regel.
In meinem Fall kann ich momentan noch wild bauen, da es innerhalb der Firma keinen Notes-Entwickler gibt (ich schließe mich dabei noch ein).
Die Datenbank ist sher simpel und ich möchte in jetzigen Fall einfach ermitteln, wieviele ein- und ausgehende Faxe wir erhalten haben. Heute und im aktuellen Monat. Da wird die vorhandene Ansicht sicherlich nicht mehr geändert und sollte es mal eine neue Version der Fax-Software geben, muss sicherlich sowieso hand angelegt werden.
Der Link über die get-view-columns-sums sieht sehr interessant aus. Vielen Dank eknori, das muss ich mir unbedingt genauer anschauen.
Im Moment versuche ich noch Troubleshooting, was mein momentanes Script betrifft. Zu einem Performance-Vergleich habe ich mal folgende Scripte zeitlich verglichen:
Set doc = view.GetFirstDocument
While Not(doc Is Nothing)
str_datum = Left(doc.GetItemValue( "StartTime" )(0),10)
If str_datum = str_aktdatum Then
ges_heute = ges_heute + 1
End If
If Mid(str_datum,4,2) = Mid(str_aktdatum,4,2) Then
ges_monat = ges_monat + 1
End If
Set doc = view.GetNextDocument(doc)
Wend
und
Set col = db.Search ({Form = "FaxForm" & StartTime = @Today}, Nothing, 0)
ges_heute = col.Count
Zudem das bestehende PHP-Script über die COM-Schnittstelle:
$entry = $view->GetFirstDocument();
while (is_object($entry)) {
$field = $entry->GetFirstItem( "StartTime" );
$starttime = $field->text;
if (substr($starttime,2,4) == ".$monat.") {
$efaxmon ++;
$field = $entry->GetFirstItem( "PAGES" );
$seiten = $field->text;
$eseitenmon += $seiten;
if (substr($starttime,0,3) == "$tag.") {
$efaxtag ++;
$eseitentag += $seiten;
}
}
$entry = $view->getNextDocument($entry);
}
Merkwürdigerweise stimmt nur das PHP-Script mit dem Wert aus der DB überein.
Die beiden Lotusscripte Code-Fragmente liefern beide einen deutlich geringeren Wert (z.b. 60 anstatt 110)
In jedem Fall lässt sich schonmal sagen, dass die Variante db.Search mindestens Faktor 10 schneller ist.