Domino 9 und frühere Versionen > Entwicklung

3 fragen

(1/4) > >>

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