Domino 9 und frühere Versionen > ND8: Entwicklung

Lotusscript Optimierung

<< < (2/5) > >>

koehlerbv:
Warum sollte man das über eine View machen (was bei dbSearch eh nicht gehen kann)?

Wenn Dir aber die Vorauswahl einer View gefällt, kannst Du die SELECT-Formel der View als Teil Deines dbSearch-Querystrings mit einbauen.

Bernhard

Peter Klett:

--- Zitat von: schroederk am 09.11.11 - 10:54:47 ---searchFormula = {View = "Reservierungen nach Datum" & Left(StartDate,10) <= str_datum & Left(EndDate,10) >= str_datum}

--- Ende Zitat ---

Ein db.Search sucht nur Dokumente. Wenn Du alle Dokumente einer Ansicht haben willst, übernimmst Du die Selektionsformel der Ansicht.

Beispiel:

Du hast eine Ansicht "Reservierungen" mit der Selectionsformel: Form = "reservierung"

Unter Verwendung eines db.Search ({Form = "reservierung"}, Nothing, 0) bekommst Du genau die gleichen Dokumente in die NotesDocumentCollection, die auch in der Ansicht sind.

Verstehe db.Search als eine temporäre Ansicht, die Du zur Laufzeit generierst, nur dass das Ergebnis eben eine NotesDocumentCollection ist, dann ist es ganz einfach, damit zu arbeiten. Du hast dabei den Vorteil, dass Du die Selektionsformel dynamisch errechnen kannst, was in einer Ansicht nicht geht.

Ich arbeite sehr viel mit db.Search und behaupte, dass die Performance nicht wirklich schlecht ist. Dadurch erspare ich mir sehr viele Ansichten, die die Datenbank auch nicht gerade schneller machen würden. Bei Zugriff auf fremde Datenbanken habe ich u.U. auch keine Möglichkeit (oder will es auch nicht), eine benötigte Ansicht einzubauen. Defekte Indizes kenne ich dabei auch nicht.

Wir hatten neulich hier im Forum über db.Search diskutiert, vielleicht findest Du da auch noch ein paar hilfreiche Hinweise.

Nachtrag: In Deiner angegebenen Suchformel vergleichst Du Datum auf Textbasis, das wird nicht klappen

"01.01.2012" ist kleiner als "02.01.2011", aber nur als Text, nicht als Datum

schroederk:
Von diesen Date-Operationen bekomm ich irgendwie immer Kopfschmerzen  :-\

In str_aktdatum steht "09.11.2011", in StartDate steht bspw. "09.11.2011 08:00:00 CET"

Ich habe den Quellcode jetzt folgendermaßen ergänzt:

Dim comparedate As Variant
Set comparedate = CDat(str_aktdatum)
searchFormula = {Form = "Reservierungen nach Datum" & StartDate <= comparedate & EndDate >= comparedate}

Die Folge ist ein Type Mismatch (wobei die angegeben Zeile bei mir eine Leerzeile ist  ???)

Muss ich erst das "09.11.2011" in ein "11/09/2011" umwandeln, damit CDat funktioniert oder liegt der Fehler jetzt beim Vergleich Startdate <= comparedate?

ascabg:
Hallo,

Kleine Frage.


--- Code: ---Set comparedate = CDat(str_aktdatum)
--- Ende Code ---
Warum machst Du hier ein Set?

Es reicht doch comparedate = cdat(str_aktdatum)


Andreas

schroederk:
Hmm, weil er mir beim Schreiben gemeckert hatte, ich müsste ein 'Set' davorsetzen. Jetzt hab ich es wieder weggenommen, keine Fehlermeldung mehr.
Allerdings auch noch das Problem, dass die searchFormula offenbar keine Elemente findet.
Ich befürchte, ich vergleiche noch immer Äpfel mit Birnen  :-:

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln