Domino 9 und frühere Versionen > ND7: Entwicklung

View-Select ohne @Today -> Methode lief in V5. V7 macht Probleme

<< < (2/3) > >>

Glombi:
Ich mache sowas auch mit der Abfrage auf "Today", "Heute" und "Heuer"  ;) und hatte damit bis jetzt keine Probleme. Falls der Admin dann auf die Idee kommt, einen französischen Server zu installieren, besuche ich ihn mit meinen Freunden Smith und Wesson  ;D

Andreas

RKuehle:
Nur um mal zu gucken ob ich in den Formeln für die anzuzeigenden Spalten (also nicht Spalte 1) keine Fehler habe, habe ich die Selectformel mal direkt mit
@Modified > @Adjust(@TexttoTime("Today";0;0;-28;0;0;0)|@Created > @Adjust(@texttoTime("Today";0;0;-28;0;0;0) per & verknüpft und schon wurde alles richtig angezeigt.
Also stellt das ursprüngliche "$4 = "V" als Bezug auf den Wert in Spalte 1 das Problem dar.

Grüße Ricardo

Glombi:
Du kannst in SELECT Formeln keinen Bezug auf Spalten machen. Wenen $4 also der programmatische Name einer Spalte ist, wird das nicht gehen.
$4="V" muss Du durch die Formel ersetzen, die in der Spalte steht.

Christian Kröll:
ich bin auch immer von der Logik ausgegangen, dass erst die Selection ausgeführt wird und dann die Spaltenformeln erst etwas zu berechnen haben. Wenn die Selektion dann auf die Spaltenergebnisse wieder zugreift, ergibt sich ein Zirkel...

Aber zum Grundsatz: Viele Dokumente, die regelmäßig aktuell den Anwendern zur Verfügung stehen müssen. Die wesentlichen Möglichkeiten hat IBM hier mal aufgezeichnet:
http://www-01.ibm.com/support/docview.wss?uid=swg27003557

In Deinem Fall neige ich zu einer Lösung, wie Andreas und ich (nebenbei mind. zwei Konzerne weltweit verteilten Servern) einsetzen (mittels "today") bzw. der "Text"-Lösung aus dem Vergleich. Sicherlich mußt Du die Aktualisierungsintervalle (updall) auf Eure Anforderung anpassen.

it898ur:
Eine andere Variante um solche Ansichten zub bekommen, ist das Vergleichsdatum "statisch" in die Selection-Formel zu schreiben

z. B. so:

--- Code: ---vToday := @Date(2005; 9; 9);

REM {END vToday};

SELECT @Cretaed >= @Adjust(vHeute; 0; 0; -7; 0; 0; 0)
--- Ende Code ---
und dann per nächtlichen Agenten die Selectionformel jeden früh 1 Uhr anzupassen

z. B. so:

--- Code: ---%REM
Beschreibung:
Dieser Agent ändert in allen Ansichten der Ansichtsauswahlformel mit "vToday :=" anfangen und
den Code "Rem 'END vToday';" enthalten den Code vor dem REM auf den aktuellen Tag.

Damit kann anschließend eine datumsabhängige Auswahl getroffen werden,
ohne dass der variable Teil der Selection-Formel durch den Agenten berührt wird.
%END REM

Dim session As New NotesSession
Dim db As NotesDatabase
Dim sel As String
Dim pos1 As Integer
Dim pos2 As Integer
Dim doc As NotesDocument
Dim tmpdoc As NotesDocument

Set db = session.CurrentDatabase

Forall view In db.Views
' Selection-Formel holen
sel = view.SelectionFormula

' auf betroffenen Code suchen
pos1 = Instr(sel, "vToday :=")
pos2 = Instr(sel, |REM {END vToday};|)

If pos1 = 1 And pos2 > 0 Then
' Feld mit der Hilfeformel in temporärem Dokument sichern
Set doc = db.GetDocumentByUNID(view.Universalid)
Set tmpdoc = db.CreateDocument
Call doc.CopyAllItems(tmpdoc, True)
Forall item In tmpdoc.Items
If item.name <> "$AppHelpFormula" And item.name <> "$FormFormula" Then
Call item.Remove()
End If
End Forall
Set doc = Nothing

' Selection-Formel korrigieren und zurückschreiben
sel = |vToday := @Date(| & Format(Today, "yyyy\; mm\; dd") & |);
| &Mid(sel, pos2 - 1)

view.SelectionFormula = sel

' Ansicht noch aktualisieren
view.Refresh

' Feld mit Hilfeformel aus temprärem Dokument zurückspielen (geht nur mit CopyAllItems, da ReplaceItemValue keine Felder vom Typ 1536 beherrscht)
Set doc = db.GetDocumentByUNID(view.Universalid)
Call tmpdoc.CopyAllItems(doc, False)
Call doc.Save(True, False)
Set doc = Nothing
Set tmpdoc = Nothing
End If
End Forall
--- Ende Code ---

Falls der Agent mal einen morgen nicht läuft, hat man zwar 8 und nicht 7 Tage, aber die Ansicht selbst arbeitet und das auch noch schnell.

Gruß

André

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln