Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MisterDa am 22.04.03 - 14:47:32
-
Hi!
ich hab mal wieder ne Frage und zwar:
Gibt es sowas wie den * in ner SQL-Select-Formel,als Schlüssel in der GetAllDocumentsByKey Methode, der mir alle Werte einer Spalte zurückgibt? Also z.b. als Key-Array (*, "schlüssel1", "Schlüssel2")
Hintergrund: ich habe eine dynamische Auswahl an Schlüsseln (insgesamt 7 Schlüssel). Wenn jetzt ein Schlüssel nicht angegeben wird, soll Notes einfach alles aus der betreffeneden Spalte auswählen, um dann mit den angegebenen Schlüsseln die Auswahl weiter zu verfeinern. Ich will verhindern, für jede Schlüsselkombination eine extra Ansicht erstellen zu müssen...da das bei 7 Schlüsseln doch relativ viele sind... 7! (fakultät :) )wenn ich mich nicht täusche.. :o
Gruß
MisterDa
-
Ich weiss nicht, ob ich die Anforderung richtig verstanden habe. Alle Man kann sich eine solche Funktion z.B. über die AllEntries Property der NotesView Klasse nachbilden. Oder durch die Ansicht mit den Methoden GetFirstDocument, GetNextDocument laufen. Oder in der ersten Spalte einen festen Wert einbauen und den als Schlüssel verwenden.
-
... wenn ich das richtig verstanden habe, dann geht das auf die Weise nicht. Du versuchst einen Zugriff und möchtest einzelne Spalten überspringen (keine Kategorie bestimmen) - Mir fällt dazu nur ein db.Search mit einer dynamischen Suchformel ein...
ata
-
jo, danke erstmal ihr beiden. So wie du das verstanden hast stimmts ata..gibt also nix vergleichbares wie den * ?.. :(
MisterDa
-
so, also es klappt ganz gut mit dem db.search..hoffentlich geht die performance nich in die Knie, wenn die Datenbank wächst...(er durchsucht doch da alle Dokumente oder?)
Wen es interessiert hier der Code für die dynamische Suchstringerstellung (hoffe ich blamiere mich nicht ;) ):
Function Kundenauswahl (kundenname As String, straße As String, postleitzahl As String, stadt As String, ansprechpartner As String, land As String) As String
searchFormula$ = "Form = ""KundendatenErfassung"" "
If Not kundenname="" Then
searchFormula$=searchFormula$ & " & KDKundename = " &Chr(34) &kundenname &Chr(34)
End If
If Not straße="" Then
searchFormula$=searchFormula$ & " & KDStraße = " &Chr(34) &straße &Chr(34)
End If
If Not postleitzahl="" Then
searchFormula$=searchFormula$ & " & KDPostleitzahl = " &Chr(34) &postleitzahl &Chr(34)
End If
If Not stadt="" Then
searchFormula$=searchFormula$ & " & KDOrt = " &Chr(34) &stadt &Chr(34)
End If
If Not ansprechpartner="" Then
searchFormula$=searchFormula$ & " & KDAnprechparnter = " &Chr(34) &ansprechpartner &Chr(34)
End If
If Not land="" Then
searchFormula$=searchFormula$ & " & KDLand = " &Chr(34) &land &Chr(34)
End If
Kundenauswahl = searchFormula$
End Function
Gruß
MisterDa
PS: falls einer noch Anregungen hat, kann er die gerne hier zum Besten geben ;D
-
... das mit der Performance bei wachsender Datenbank hast du richtig erkannt. Das lässt sich zwar beschleunigen, wenn du einen Volltextindex von der DB machst, aber auch der Volltextindex braucht seinen Platz und muß aktuell gehalten werden...
ata
-
Naja, aber solange es eben keine sinnvolle Alternative gibt, bleibt mir wohl nichts anderes übrig, als db.Search zu nehmen..ob die zig einzelnen Ansichten da performanter wären als db.Search ist eine Sache, der Pflegeaufwand bei neu hinzukommenden Kriterien eine andere.....
MisterDa
-
... dann hast du pro Ansicht auch noch einen Index, der die DB anschwellen lässt...
ata