Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: manuel am 17.10.02 - 14:32:43
-
Hallo allerseits
Arbeite gerade an einer Funktion, um Dokumente nach gewissen Feldkriterien zu suchen. Das funktioniert mit dieser Methode ganz gut:
Set notesDocumentCollection = notesDatabase.Search( formula$, notesDateTime, maxDocs% )
Es ist möglich in der Suchformel, die übergeben wird, bei gewissen Feldern genau anzugeben, was in diesen Feldern enthalten sein soll. zB:
searchFormula$ = "Form = ""Project"" & ReminderDate = @Today"
Nun ist es aber so, dass diese Suchkriterien genau übereinstimmen müssen. Es ist also nicht möglich, so wie bei der Methode FTSearch, dass wenn man "Hampel" eingibt, dass auch nach "Hampelmann" gesucht wird. Ich will aber absichtlich keine Volltextsuche verwenden, weil ich hier die Suchkriterien nicht bestimmten Feldern zuordnen kann. Dies kann nur die Methode Search, oder gibt es vielleicht doch noch eine andere Möglichkeit?
Schöne Grüße
Manuel
-
Wie wär's mit
searchFormula$ = "Form = ""Project"" & ReminderDate = @Today" &
@Contains(@lowercase(Feld);"hampel")
@lowercase deshalb, da dann die Suche nicht case sensitive ist.
Gruß
Andreas
-
ach ja, das mit den "" in String
besser ist
searchFormula$ = {Form = "Project" & ReminderDate = @Today &
@Contains(@lowercase(Feld);"hampel")}
-
habe das in einer Anwendung mal so gemacht
Dim dc As NotesDocumentCollection
tmp$="DeinWert"
selection = "SELECT (@Contains(TAEDNR;" & Chr(34) & tmp$ & Chr(34) & "))"
Set dc = db.Search( selection, Nothing ,0 )
selection kannst du beliebig erweitern
Chr(34) ist das " -Zeichen
eknori
-
Hey, das ist super. Funktioniert toll. Sogar das Problem mit Groß-/Kleinschreibung ist nun gelöst.
DANKE EUCH BEIDEN !!!
Schönen Gruß
Manuel
-
... noch ne Variante
selection = |Form = "Project" & ReminderDate = @Today &
@Contains(@lowercase(Feld);"hampel")|
Die Pipe-Zeichen ersetzen die Anführungszeichen, damit lässt sich die Formel dann ganz gewöhnlich schreiben. Wenn man in der Formel dann ein "oder" braucht siehts dann so aus:
selection = |Form = "Project" |+"|"+| ReminderDate = @Today &
@Contains(@lowercase(Feld);"hampel")|
... als Beispiel
ata
-
Danke ata.
Das war mir schon bekannt. Trotzdem danke.
Mir persönlich gefällt aber der Vorschlag von Glombi besser, es mit den geschwungenen Klammer {} zu lösen.
Es ist einfach viel übersichtlicher bei einer langen Suchformel.
Schönen Gruß
Manuel
-
Ich will aber absichtlich keine Volltextsuche verwenden, weil ich hier die Suchkriterien nicht bestimmten Feldern zuordnen kann. Dies kann nur die Methode Search, oder gibt es vielleicht doch noch eine andere Möglichkeit?
Hi Manuel,
selbstverständlich kann man mit der Volltextsuche auch Suchkriterien bestimmten Feldern zuordnen.
Der Suchstring muss dann so aussehen:
searchFormula$ = {FIELD Form CONTAINS "Project" & FIELD ReminderDate = Today()}
oder etwas kürzer:
searchFormula$ = {[Form] CONTAINS "Project" & [ReminderDate] = Today()}
Axel
-
Hi Axel
Schaut gut aus, hab ich gar nicht gewusst, dass dies auch mit FTSearch funktioniert. Hab' mir gerade die Hilfe noch einmal genauer angesehen. Es gibt wirklich einige Möglichkeiten die Suche noch weiter einzuschränken.
Danke für deinen Tipp. Aber ich bleibe einstweilen bei der normalen Search-Methode.
Schönen Gruß
Manuel