Domino 9 und frühere Versionen > Entwicklung
3 fragen
Lorenz:
hallo
hier mal so drei fragen...
wie kann ich, mittels script in einem button, in einer view eine spalte durchsuchen. das ziel ist es nur die in der spalte angezeigten werte zu durchsuchen.
wie kann ich die in einem folder angezeigten dokumente aus dem folder mittels script löschen (das dokument sollte aber nicht in der datanbank gelöscht werden.
das $v2AttachmentOptions feld sollte berechnet und mit wert 0 versehen sein, wenn man nicht möchte, dass es einem attachments anzeigt. funktioniert dies unter r6 auch so?
vielen dank für antworten.
Thomas Schulte:
Zu 1: Gar nicht. Zumindest nicht im Frontend. Mit ein paar Tricks dann im Backend. Hängt davon ab wie gut du Script kannst.
Zu 2: Such mal nach RemovefromFolder (NotesDocument Klasse) bzw. RemoveAllFromFolder (NotesDocumentCollection Klasse)
Zu 3: Keine Ahnung. Musst du ausprobieren.
Thomas
Lorenz:
zu 1. kann leider nicht sehr gut scripten. :-\ aber, was ja noch eine möglichkeit wäre, ist nach feldinhalten in einem definierten feld zu suchen.
also z.b. beim ftsearch nicht db.ftsearch sondern dann ein db.Feldname.ftsearch. würde das gehen?
(db gleich NotesDatabase)
so könnte man das ganze mit der ansichtsauswahl etc. weglassen.
wie würdest du das problem lösen?
Thomas Schulte:
mal so aus dem Bauch raus und ohne Funktionsgarantie:
Der FTSearch hat zuviele Tücken um ihn da vernünftig einsetzen zu können. Zum Beispiel ist da die Frage der letzten Aktualisierung die nicht ganz unerheblich ist. Performance und die Anzahl der Zurückgegebenen Werte spielen auch noch eine Rolle.
Das Grundproblem ist, das du eine View hast und mit dieser View in der Regel schon einmal eine Vorauswahl getroffen wurde. Also kannst du zwei Wege gehen:
1. du schnappst dir in Script die View, und benutzt zusätzlich die Column Klasse Dann gehst du her und hast daraus den Feldnamen der verwendet wurde (vorausgesetzt es wurde ein Feldname verwendet, wenn nicht hast du ein problem aber das kannst du auch in der Hilfe nachlesen). Jetzt kannst du mit der Viewentrycollection oder auch im View direkt jedes Dokument des Views durchgehen und anschließend deine Vergleiche auf dem Feldnamen machen. Ist ein bischen Tricky aber funktioniert.
2. Du nimmst db.search (näheres siehe Online Hilfe) Das Teil baut den Search direkt zur Laufzeit auf und wird häufig von Entwicklern unterschätzt. Da kann man nämlich, was z.B. mit FTSearch nicht richtig funktioniert Datumsvergleiche von - bis anstellen. Das Ding erstellt eine DocumentCollection und zwar zur Laufzeit über alle Dokumente. Damit ist es soweit ich weiss immer aktuell. Der Haken dabei ist, Performance (Das Teil frisst sie förmlich) und Speicher (den frisst es auch). Der zweite Teil des Hakens, die Collection ist unsorted, wenn du also eine bestimmte Reihenfolge brauchst muss sie erst noch sortiert werden.
Thomas
Lorenz:
in einem meiner script bücher hats ein beispiel wie man durch view spalten suchen kann (mit search). ich werde das beispiel einfach anpassen und hoffen, dass es funktioniert.
hier mein code für de ftsearch. jedoch habe ich noch zwei offene punkte, die ich in den code einbauen möchte. und zwar, das automatische removen der dokumente aus dem folder und das automatische aktualisieren des folders bzw. dann der view.
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As notesdocument
Dim dc As NotesDocumentCollection
Dim uiw As New NotesUIWorkspace
Dim uidoc As notesuidocument
Dim art As String /wird gebraucht um den suchstring zu ergänzen
Dim vts As String /der suchstring
Set uidoc = uiw.CurrentDocument
art = uidoc.FieldGetText("suchart") /einlesen der suchart *wert oder *wert* etc
hier die abfrage wie gesucht werden soll.... (gibt sicher schönere varianten)
If ( art = "Festwert") Then
vts = uidoc.fieldgettext("erf_volltext")
Else
If (art = "Fragment") Then
vts = "*" & uidoc.fieldgettext("erf_volltext") & "*"
Else
vts = uidoc.fieldgettext("erf_volltext") & "*"
End If
End If
Set db = s.CurrentDatabase
Set dc = db.FTSearch(vts,0)
1. hier würde ich gerne den folder ergebnis leeren aber wie?
Call dc.PutAllInFolder("ergebnis")
2. und hier sollte noch ein autoupdate der view (bzw. des folders) hinkommen die ich einem unteren frame anzeige.
End Sub
du würdest mir sehr helfen, wenn du mir ein tipp geben könntest wie ich die probleme 1 und 2 lösen könnte. vielen dank
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln