Hallo zusammen,
derzeit stehe ich ein wenig auf Kriegsfuss mit einer Suche welche zwischenzeitlich dank Bernhards Hilfe wunderbar funktioniert (
http://atnotes.de/index.php/topic,59051.0.html).
Nun geht es noch um die Darstellung der gefundenen Dokument.
In der DB Existieren ich mehrere Ansichten, deren Namen mit "Personen" beginnen. Eine flache und welche, wo ich Kontakte nach unterschiedlichen Kriterien kategorisiere.
Nun erstelle ich mir bzw der Benutzer eine individuelle Suche zusammen. Er startet eine Suche und kann dann neue Kriterien hinzufügen oder aber Kontakte aus der Suche entfernen lassen. Am Ende entsteht mit einer DB.Search eine DocumentCollection, welche ich derzeit in einen Ordner, welcher bei der ersten Benutzung privat wird, verschoben wird, damit der Benutzer nur diese sieht.
Diese Ordner heissen genauso wie die Ansicht, haben aber noch ein "SearchResults" vorangestellt.
Das kuriose an der ganze Geschichte ist nun, dass in der flachen Ansicht alles wunderbar funktioniert.
Der Benutzer wählt eine initiale Suche, die Dokumente gehen in den Ordner und der Ordner wird geöffnet.
Er sagt nun, dass beispielsweise die Kontakte mit dem Attribut "1. Kinofilme 2015\Das A-Team\Abgesagt" nicht mehr mit angezeigt werden sollen und das Dokument des Kontaktes "Benutzer, Test" wird auch nicht mehr in dem Ordner angezeigt. Denn via Code mache ich den Ordner erst mal leer, bevor ich die neue Ergebnismenge dort rein schiebe.
Nun klappt aber genau die gleiche Suche nicht, wenn ich ausgehend von der Kategorisieren Ansicht "Personen\Nach Kategorie" suche.
Es wird ebenfalls die korrekte Menge an Ergebnisdokumenten ermittelt, aber die in der ersten Suche entstandenen Kontakte werde einfach nicht aus dem Ordner entfernt. Und ich verstehe nicht wirklich warum.
Ich habe in jedem Ordner als erste Spalte eine versteckte Spalte, welche den Wert "1" beinhaltet.
Damit kann ich dann im Code mittels View.GetAllDocumentsByKey("1", true) die enthaltenen Dokument holen und removen. So dachte ich.
Hat dazu jemand eine Idee warum er dort keine Dokumente findet, wenn ich aus der kategorisieren Ansicht suche?
Das sieht man im Log um 07:38:33 mit dem Eintrag "Remove documents (0) from folder: SearchResultsPersonennachKategorie".
Dort sollten eigentlich die 4 Dokumente von 07:38:27 drin stehe, welche mit "Move 4 document(s) to folder SearchResultsPersonennachKategorie" dort rein geschoeben wurden und dem Benutzer dargestellt wurden.
Diese Beispieldokumente habe ich derzeit in der DB:
Und kategorisiert sehen diese so aus:
Und hier mal das Log der Suche aus der flachen Ansicht und aus der kategorisierten Ansicht.
Den Unterschied habe ich mal rot markiert.
Hier mal der Code, welcher für die Suche zuständig ist, den Ordner bereinigt, die Dokumente verschiebt und den neuen Folder öffnet.
If strSearch <> "" Then
' Formel für die Suche wurde ermittelt, wird gespeichert
Call noteRecherche.Replaceitemvalue("Search", strSearch)
Call noteRecherche.save(True, False)
Print Time() & " " & strSearch
' Und suchen...
Set doccol = dbCur.search(Replace(strSearch, "\", "\\"), Nothing, 0)
' Darstellung der Ergebnismenge in einem Folder
Set uiview = uiws.Currentview
strSrcView = uiview.Viewname
If LCase(Left(uiview.Viewname, 12)) = "searchresult" Then
strUIView = uiview.Viewname
Else
strUIView = "SearchResults" & uiview.Viewname
End If
If strSrcView <> strUIView Then
Call uidb.Openview(strUIView)
Call uiview.Close()
End If
Set viewFolder = dbCur.Getview(strUIView)
If viewFolder.Isprivate Then
Print time() & " " & strUIView & " - private"
Set doccolTemp = uiview.view.Getalldocumentsbykey("1", true)
Call doccolTemp.Removeallfromfolder(strSrcView)
Print Time() & " Remove documents (" & cstr(doccolTemp.count) & ") from folder: " & strUIView
Print Time() & " Move " & CStr(doccol.count) & " document(s) to folder: " & strUIView
Call doccol.Putallinfolder(strUIView, false)
End If
End if
Hier die Darstellung nach der Suche aus der flachen Ansicht:
und hier das Ergebnis nach der Suche aus der kategorisierten Ansicht.
Da müsste eigentlich "Benutzer, Test" entfernt worden sein.
Ich hoffe, dass das was ich vorhabe einigermassen verständlich ist und auch das Problem anhand des Log zu sehen ist.
Wenn nicht, bitte einfach melden.
Denn wie gesagt, derzeit ist mir das nicht klar, warum das in einer Ansicht geht und aus der/den anderen Ansicht(en) nicht.