Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: jo@chim am 22.03.08 - 13:41:47

Titel: notesViewColumn.Formula per scheduled Agent
Beitrag von: jo@chim am 22.03.08 - 13:41:47
In einigen Ansichten einer Anwendung habe ich bisher in Spaltenformeln @today-Bezüge zur Berechnung von Fälligkeitstagen verwendet - was die Aktualisierungszeiten inzwischen nicht mehr tolerierbar in die Höhe treibt.

Um das zu umgehen habe ich mir überlegt, per scheduled Agent mit notesViewColumn.Formula täglich das aktuelle Datum hardcoded in die Spaltenformeln der Views zu schreiben.

Spricht da was dagegen?
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: eknori am 22.03.08 - 14:06:53
Nein, dagegen spricht nichts. Ist sogar Best-Practice.
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: jo@chim am 22.03.08 - 14:13:11
Danke & schöne Fest noch, eknori (an alle anderen hier natürlich auch!)  :)
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: jo@chim am 22.03.08 - 15:55:32
P.S. - Hier noch der Code des Agenten der Datum-Strings in Auswahl- oder Spaltenformeln durch das aktuelle Datum ersetzt:

Code
Option Public


Sub Initialize
	'Selection-Formel ersetzen
	'Integer = Beginn des Datum-Strings in der Form DD.MM.YYYY
	viewStr$="view1"
	retStr$=replaceSelectionFormula(viewStr$,21)
	Print "Selection Formula für '" & viewStr$ & "' aktualisiert auf:" & Chr$(10) & retStr$ & Chr$(10

	'Spalten-Formel ersetzen
	'Integer Nr. 1 = Spalten-Nr.
	'Integer Nr. 2 = Beginn des Datum-Strings
	viewStr$="view2"
	retStr$=replaceColumnFormula(viewStr$,0,52)
	Print "Column Formula für '" & viewStr$ & "' aktualisiert auf:" & Chr$(10) & retStr$ & Chr$(10)
	

	
End Sub

Function replaceSelectionFormula(viewStr As String,lStr As Integer) As String	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Set db = session.CurrentDatabase
	Set view = db.GetView(viewStr)
	org_formula$=view.SelectionFormula
	org_dat$= Mid(view.SelectionFormula,lStr,10)
	new_dat$=Format(Now(),"dd.mm.yyyy")
	new_formula$=Replace(org_formula$,org_dat$,new_dat$)
	view.SelectionFormula=new_formula$
	replaceSelectionFormula=new_formula$
End Function

Function replaceColumnFormula(viewStr As String,colNr As Integer, lStr As Integer) As String
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim vc As NotesViewColumn
	Set db = session.CurrentDatabase
	Set view = db.GetView(viewStr)
	Set vc = view.Columns(colNr)
	org_formula$=vc.Formula
	org_dat$= Mid(vc.Formula,lStr,10)
	new_dat$=Format(Now(),"dd.mm.yyyy")
	new_formula$=Replace(org_formula$,org_dat$,new_dat$)
	vc.Formula=new_formula$
	replaceColumnFormula=new_formula$
End Function
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: ata am 23.03.08 - 09:12:28
... man kann das auch über die Notes.ini machen...

Toni
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: jo@chim am 23.03.08 - 10:16:01
Notes.ini - eine lokale Variable für eine (serverbasierte) Ansicht ???
Zitat von: LN7 Benutzerhilfe
@Environment kann nicht in Spalten- oder Auswahlformeln verwendet werden
Aber ich tu Dich sicher missverstehn?
Titel: Re: notesViewColumn.Formula per scheduled Agent
Beitrag von: ata am 23.03.08 - 21:03:21
Zitat
(serverbasierte)

... sorry - hab ich nicht gelesen - geht nur bei lokalen Datenbanken - daher ist der geschilderte Weg dann schon der Richtige...

Toni