Autor Thema: SELECT Formel optimieren  (Gelesen 1667 mal)

Offline Dr 84

  • Frischling
  • *
  • Beiträge: 29
  • Geschlecht: Männlich
SELECT Formel optimieren
« am: 14.03.14 - 14:21:53 »
Hallo zusammen,

eine Ansicht in der DB hat folgende SELECT Formel:
Code
SELECT (form = "LNPrep" | form="Leistungsnachweis") & ad_delete !="1" & @Date(ln_wvg) > @Today & orphan!="1" & hide != "1"

Die Auswertung "@Date(ln_wvg) > @Today "  (Datum der Wiedervorlage liegt in der Zukunft) macht die Ansichtaufbau sehr sehr langsam..

Wie kann ich diese Formel optimieren?

Glombi

  • Gast
Re: SELECT Formel optimieren
« Antwort #1 am: 14.03.14 - 14:38:45 »
Also ich mache es so:
Erstelle einen Agenten, der einmal nachts das aktuelle Tagesdatum in ein Feld der Dokumente schreibt und vergleiche dann mit dem Feld.

Oder sowas:
http://atnotes.de/index.php/topic,10260.0.html

Andreas

Offline Dr 84

  • Frischling
  • *
  • Beiträge: 29
  • Geschlecht: Männlich
Re: SELECT Formel optimieren
« Antwort #2 am: 14.03.14 - 14:52:55 »
Danke Glombi! Top tipp.

Mitch

  • Gast
Re: SELECT Formel optimieren
« Antwort #3 am: 14.03.14 - 14:58:34 »
Huhu,

oder du schreibst einen Agenten der die Select-Formel der Ansicht jede Nacht ändert, so dass das Datum fix drin steht. Das könnte bei großen Dokumentenzahlen und/oder Repliken vielleicht performanter sein.

Oder du markierst bestimmte Dokumente über Nacht. Zum Beispiel könnten alle Dokumente in denen das Wiedervorlagedatum erreicht ist mit einem neuen Item geflaggt werden. Dann kannst du Ansichten bauen für Doks die dieses Item haben oder eben nicht haben. Musst dann natürlich dran denken das Item ggf. wieder zu entfernen, z.B. wenn sich das Wiedervorlagedatum verschiebt oder entfernt wird.

Gruß,

Mitch

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: SELECT Formel optimieren
« Antwort #4 am: 14.03.14 - 19:02:00 »
Ich würde nicht jedes Dokument jeden Tag mit dem aktuellen Tagesdatum ändern, sondern per Agent den benötigten Status setzen, z.B. zukünftig, oder abgelaufen, dann brauchst Du das Dokument nur einmal zu ändern, und nicht täglich.

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: SELECT Formel optimieren
« Antwort #5 am: 17.03.14 - 11:04:22 »
Alle Dokumente anfassen ist gar nicht nötig - es geht auch, die Selektions- und/oder Spaltenformeln der betreffenden Views mit einem zeitgesteuerten Agenten über Nacht anzupassen. Das sieht dann so aus:

Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	
	'Name der Variablen für den Datumswert in den Views
	varActStr$="_varAct"
	
	datStrStart%=Len(varActStr$)+12
	
	Set db = session.CurrentDatabase
	views = db.Views
	On Error Resume Next
	Forall v In views
		'Überprüfe Selektionsfomeln
		org_formula$=v.SelectionFormula
		If Left(org_formula$, Len(varActStr$)) = varActStr$ Then
			org_formula$=v.SelectionFormula
			org_dat$= Mid(org_formula$,datStrStart%,10)
			new_dat$=Format(Now(),"dd.mm.yyyy")
			new_formula$=Replace(org_formula$,org_dat$,new_dat$)
			v.SelectionFormula=new_formula$			
		End If
		'Überprüfe Spaltenformeln
		Forall vc In v.Columns
			org_formula$=vc.Formula			
			If Left(org_formula$, Len(varActStr$)) = varActStr$ Then
				org_formula$=vc.Formula
				org_dat$= Mid(org_formula$,datStrStart%,10)
				new_dat$=Format(Now(),"dd.mm.yyyy")
				new_formula$=Replace(org_formula$,org_dat$,new_dat$)
				vc.Formula=new_formula$			
			End If
			
		End Forall
	End Forall
End Sub

"_varAct" ist der Kennzeichner für Views mit zu ändernden Datumswerten, die der Agent anfassen soll. Eine Spaltenformel kann dann z.B. so oder ähnlich aussehen:

Code
_varAct:=@ToTime("17.03.2014");
@If(@ToTime(Datumsfeld)<_varAct;"Überfällig";"Im Plan");
...

In der ersten Zeile muss immer der Kennzeichner stehen, damit das Datum geändert wird. Läuft hier seit mehreren Jahren problemlos, auch über internationale Repliken.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz