Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bikerboy am 17.12.07 - 12:06:31

Titel: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 12:06:31
Hallo liebe Gemeinde,

Habe folgende Herausforderung.

Ich habe eine Maske gebaut die als DialogBox aufgerufen wird und am Ende einen String zurück gibt (Konnte ich per eigener Suche im Forum lösen( Das wird ein guter Tag)), aber dann scheitert es an einer Sache, nämlich der Volltextsuche in der View.

Ich setze folgenden Query ab

"[AdrOrganization] contains  accept"

Wenn ich das auf die DB laufen lasse bekomme ich die Gewünschten Dokumente zurück, bei der View bleiben alle Dokumente erhalten obwohl gerade mal 5 gefunden werden, ist denn der Query für eine FTsearch auf eine DB anders als auf eine View ?

Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 12:42:53
... ist denn der Query für eine FTsearch auf eine DB anders als auf eine View ?

Ja. Wenn du einen FTSearch auf eine DB loslässt, dann werden alle Dokumente in der Datenbank berücksichtigt. Bei einer Suche auf eine View nur die Dokumente die der Select-Formel der Ansicht entsprechen.



Axel
Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 12:45:53
@Axel:

Hilft mir aber leider nicht weiter,


habe dann mal diesen Code probiert, aber abwohl die Firma in der View ist findet er sie nicht


Code
	Dim ws As New NotesUIWorkspace
	Dim view As NotesView
	
	Set view = ws.CurrentView.View
	Call view.FTSearch("accept")
	

Wieso , weshalb, warum ?
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 12:52:29
Dein Suchstring stimmt so nicht.

Call view.FTSearch("[AdrOrganization] contains accept")


So müsste es gehen.


Axel

Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 13:01:12
hmmm ich weiss nicht irgendwie sieht dein Vorschlag so aus wie meiner im 1. Post, oder übersehe ich da was ???
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 13:12:07
Ich habe das mal probiert. Das funktioniert auch, wenn du nur den Suchwert angibst. Ich war da auf dem falschen Dampfer. Ich habe diese FTSearch-Variante noch nie eingesetzt.

Aber du fällst hier in die Frontend-/Backendfalle. D.h. du löst die Suche im Backend aus, das Frontend bekommt aber nichts mit davon. Das wird so nicht funktionieren.

Was hast du denn vor? Vielleicht finden wir eine andere Lösung.


Axel
 
Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 13:15:04
Ja vor habe ich folgendes,


1. Benutzer drückt einen Suchknopf

2. Benutzer füllt Maske aus

3. Die View in der er der USer sich befindet wir dahingehend gefiltert, also nur die Ergebnisse bleiben stehen.
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 13:22:41
Yoo, dann bleibt dir nur der Umweg über einen Ordner.

D.h. der User füllt die Suchmaske aus, dann wird ein FTSearch über die Datenbank gemacht (denn nur die liefert die eine NotesDocumentCollection mit den gefundenen Dokumenten zurück) und die packst du dann mit NotesDocumentCollection.PutAllInFolder in einen Ordner.

Dabei ist zu beachten, dass es ein persönlicher Ordner sein sollte, da sich sonst die einzelnen User ins Gehege kommen und dass der Ordner vor eine neuen Such geleert werden muss. Sonst wird das Ergebnis verfälscht.


Axel
 
Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 13:34:45
Hmmm kannst du mir bitte ne Schnellanleitung geben,


Code
	Dim session As New NotesSession	
	Dim docColl As NotesDocumentCollection
	
	Dim folderName As String
	
	
	folderName = {persFolderOf}+  session.UserName
	
	Call AdrDB.EnableFolder(folderName)
	
	Set docColl = AdrDB.FTSearch(Query,0)
	Call docColl.PutAllInFolder(folderName)



WIe gehts dann weiter , ich will dass der Folder dann gleich geöffnet wird
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 13:50:50
Einen Ordner mit Script zu öffnen ist nicht so ohne weiteres möglich.

Du kannst es mit

Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )

mit den entsprechenden Parametern versuchen. Im Parameter view$ gibst du dann den Namen des Ordners an.

Noch ein Fallstrick über den du mit Sicherheit fällst is diese Zeile

Call AdrDB.EnableFolder(folderName)

Damit wird der Ordner aber nicht automatisch angelegt, wenn er nicht vorhanden ist. D.h. du musst selbst dafür sorgen, dass der Ordner vor der ersten Verwendung angelegt wird. Und genau an diesem Punkt habe ich schon Tage zugebracht und meine Haare sind um einiges grauer geworden.

Mein Lösungsweg sieht inzwischen so aus:

Im Database-Script (PostOpen-Event) habe ich zwei Formelzeilen drin


@Command([OpenView]; "(Suchergebnis)");
@Command([FileCloseWindow]);


Damit wird beim Öffnen der DB der Ordner kurz geöffnet und wieder geschlossen. Existiert er nicht wird er angelegt. Du musst natürlich in deiner Gestaltung einen SPOFU(Gemeinsam, privat bei Erstbenutzung)-Ordner angelegt haben.

Wenn der User eine Suche machen will, öffnet er den Ordner und führt seine Suche über eine Aktion aus der Aktionsleiste aus.

Diesen Weg habe ich bereits in mehreren DBs im Einsatz und bislang funktioniert das Ganze ohne Probleme.

Axel
Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 14:09:25
Hmm Bei DB.EnableFolder steht doch aber beschrieben dass er den Ordner anlegt wenn nicht vorhanden ???

Die Lügen,


Aber ich gehe nun auf Doppelt sicher , habe beim PutallInFodler das Flag auch noch mitgegeben.
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 14:14:09
Hmm Bei DB.EnableFolder steht doch aber beschrieben dass er den Ordner anlegt wenn nicht vorhanden ???

Die Lügen,

Du darfst eben nicht alles glauben was in der Hilfe steht.   ;)

Hier war vielleicht der Wunsch der Vater des Gedankens.


Axel
Titel: Re: Volltextsuche in einer View
Beitrag von: bikerboy am 17.12.07 - 14:25:41
Gut dann bitte noch schnell den Tip wie ich einen persönlichen Folder erstelle
Titel: Re: Volltextsuche in einer View
Beitrag von: Axel am 17.12.07 - 14:29:16
Gut dann bitte noch schnell den Tip wie ich einen persönlichen Folder erstelle

Du gehst im Designer unter Ordner, legst einen neuen Ordner an und stellst als Typ "Gemeinsam, privat bei Erstbenutzung" ein. Der Rest ist Designarbeit wie bei den Ansichten.


Axel