Autor Thema: GetAlldocumentsByKey Problem? oder ists doch die Ansicht :( ?  (Gelesen 2208 mal)

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
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









« Letzte Änderung: 18.10.06 - 10:35:26 von Grmpf »

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
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
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
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 ;=)




botschi

  • Gast
Nutze doch, je nachdem welche Felder ausgefüllt sind, eine andere GetAllDocumentsByKey-Abfrage.
Dann aber mit true als Parameter.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

botschi

  • Gast
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.

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
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 ;)



Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Grmpf

  • Frischling
  • *
  • Beiträge: 34
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 ?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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)
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz