Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Grmpf am 16.10.06 - 13:03:20

Titel: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Grmpf am 16.10.06 - 13:03:20
hi,


Habe folgendes Problem wobei ich in meinem script keinen "logischen" Fehler erkennen kann :

es werden scheinbar zufällig keine dokumente aus meiner getalldocumentsbykey abfrage gefunden . Das keyarray befülle ich folgendermaßen :

Bsp:

keyarray(0) = Proc.URLParametereins(0)
keyarray(1) = Proc.URLParameterzwei(0)
keyarray(2) = Proc.URLParameterdrei(0)

dokumente holen :

Set doccollection = Ansicht1.GetAllDocumentsByKey(keyarray, false)
Set doc1    = doccollection.GetFirstDocument

....Abfragen per getitemvalue, GetNextDocument, usw.

in diesem Beispiel können Inhalte des Array auch einen leeren String beeinhalten.


Meine ansicht "Ansicht1" sieht folgendermaßen aus :

- 3 sortierte spalten die den jeweiligen Indexen des Arrays entsprechen , und den spaltenwert aus dem entsprechenden Feld beziehen.


Problem :
Auf den ersten Blick scheinen alle abfragen zu funktionieren , Die verschiedensten Kombinationen geben die richtigen werte zurück, und leere Array-INhalte werden akzeptiert.

Aber scheinbar wahllos werden einzelne Dokumente nicht gefunden . HIer ein Beispiel :

keyarray(0) = ""       
keyarray(1) = ""
keyarray(2) = "Pdf"

findet kein dokument obwohl vorhanden .

ändere ich den Ihnalt eines Anderen Feldes des gleichen dokuments , oder lege ich ein neues dokument an  wird es plötzlich gefunden ..


EDIT :

Das gleiche Problem tritt auch mit der Methode " GetAllEntriesByKey" .



Steh hier völlig auf dem schlauch und bin für jeden HInweis dankbar ;)

grüße









Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Wilhelm am 16.10.06 - 14:09:30
Hi und willkommen im Forum,

folgendes sagt die Hilfe dazu:

Zitat
The use of partial matches with multiple keys may result in missed documents. If the first key is partial and the second column does not sort the same with the partial key as with the exact key, documents that fall out of sequence are missed.

Kannst Du den Exact-Matsch-Parameter nicht auf true umstellen?

Gruß

Willi
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Grmpf am 16.10.06 - 14:25:35
hi,

das problem ist ich muss es der abfrage ermöglichen leere strings in das keyarray zu stecken.

zur erklärung:

Ich baue eine art such/filterformular welches einige Menues hat die mitteinander kombinierbar in der abfrage sind und jede Kombination erlauben sollen.

Bsp: ein pulldownmenue für das "Thema"
        eins für die "Authoren"
        und eins für das "Medium"

Der User muss auch nur nach medium oder nach medium und thema suchen können zB. also jede kombination .

Bin notes-anfänger, und die Passendste Lösung für dieses Problem erschien mir mit GetAllDocumentsByKey oder GetAllEntriesByKey..

Wenn ich den Excact -Match auf true setze hab ich das problem das nur Dokumente gefunden werden wenn alle Werte des Arrays auf EIN spezielles Dokument zeigen. Also Alle werte übereinstimmen. So habe ich keine Möglichkeit mehr ,nach nur einem Suchkriterium zu filtern...

vielleicht habe ich eine andere möglichkeit sowas zu realisieren übersehen ?


danke im vorraus ;=)



Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: botschi am 16.10.06 - 14:29:14
Nutze doch, je nachdem welche Felder ausgefüllt sind, eine andere GetAllDocumentsByKey-Abfrage.
Dann aber mit true als Parameter.
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Axel am 16.10.06 - 14:31:45
Versuch's doch mal mit der Methode Search aus der Klasse NotesDatabase. Dieser kannst du die Suchkriterien übergeben und erhälst eine DocumentCollection als Ergebnis zurück.


Axel
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: botschi am 16.10.06 - 14:38:19
So muss man die Suchformel aber auch anpassen, je nachdem welches Feld ausgefüllt wurde. Wenn Thema nicht ausgefüllt wurde, kann man der Formel ja nicht sagen Thema = "", Thema ist dann nur nicht relevant für die Suche.
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Grmpf am 16.10.06 - 16:17:22
hi nochmal ;)


versuchs grad mit der angesprochenen db.Search methode..
sieht so aus und klappt auch bei einem suchkriterium :

set col = db.Search( |Topic = "Testthema"| ,Nothing, 5)


Verzeiht mir meine unwissenheit, aber ich fand in keiner doku etwas dazu wie ich diese methode nutzen kann um mehrere suchkriterien anzugeben . Stelle mir da sowas vor (beispielhaft):

set col = db.Search(|Topic = "Testthema" AND Author = "Testauthor" |, Nothing, 5)

klappt so leider nicht ^^ Ideen ?

danke nochmal ;)


Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Tode am 16.10.06 - 16:20:24
der Search- String ist ein @Formula- Suchstring wie Du ihn in einer Ansicht verwenden würdest, nur ohne Select.

korrekt wäre also:

set col = db.Search(|Topic = "Testthema" & Author = "Testauthor" |, Nothing, 5)

oder wenn Du nicht nur 5 sondern alle Ergebnisse willst:

set col = db.Search(|Topic = "Testthema" & Author = "Testauthor" |, Nothing, 0)


HTH
Tode
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Grmpf am 17.10.06 - 09:16:04
guten morgen ;)


danke erstmal für die vielen antworten . Die Abfrage per db.search(....) funktioniert soweit auch bei mehreren Kriterien.

Nur leider nur auf folgendem weg(direkt im Methodenaufruf) :
Set col = db.Search(|Topic = "Programming Language" & Author = "Brian Benz" & Medium = "Print"|, Nothing, 0)


Da ich es variabel (jede kombination ) halten muss und auch Leerstrings abfangen muss versuche ich es so :

menstr1 = "|Topic = " + quotes + Proc.URLParameterTopic(0) + quotes
menstr2 = " & Author = " + quotes + Proc.URLParameterAuthor(0) + quotes
menstr3 = " & Medium = " + quotes + Proc.URLParameterMedium(0) + quotes + "|"

...abfangen von leerstrings... etc.

fquery = menstr1 + menstr2 + menstr3

Set col = db.Search(fquery, Nothing, 0)

... wenn ich mir die fquery ausgeben lasse sieht die genauso aus wie wenn ich sie direkt reinschreiben würde, trotzdem erhalte ich im log die meldung  :  Notes error: Formula Error

jmd ne idee ?
Titel: Re: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?
Beitrag von: Axel am 17.10.06 - 09:49:46
Da sind Pipe-Zeichen zuviel.

Versuch's mal so:

menstr1 = {Topic = "} & Proc.URLParameterTopic(0) & {"}
menstr2 = { & Author = " } & Proc.URLParameterAuthor(0) & {"}
menstr3 = { & Medium = "} & Proc.URLParameterMedium(0) & {"}

...abfangen von leerstrings... etc.

fquery = menstr1 & menstr2 & menstr3


Axel


Set col = db.Search(fquery, Nothing, 0)