Domino 9 und frühere Versionen > ND8: Entwicklung

Ansicht erstellen in Abhängigkeit eines Datumswerts

(1/4) > >>

buzi:
Hallo,

ich kämpfe gerade mit der Erstellung einer korrekten Selection Formel für eine Ansicht. Mir fehlt einfach das Verständnis für die Syntax der Lotus Formelsprache :-(

Es soll eine Ansicht gefiltert werden nach einem vom Benutzer angegebenen Datumswert. Ich habe festgestellt, dass sich die Datumsarten irgendwie nicht vertragen. Die Formelsprache hat ein anderes Format als die Script-Oberfläche? Die übergebenen Parameter startDate und endDate habe ich aus einem Feld im Dokument ausgelesen per GetItemValue() - es handelt sich um ein Feld vom Typ
Datum/Zeit. Der Wert liegt dann in der Form "tt.mm.jjjj" vor. rohDtStatus ist das Feld in den Dokumenten der Ansicht, die erstellt werden soll (aber eben nur von den Dokumenten, deren rohDtStatus sich innerhalb des angegebenen Zeitraums befindet).


Mein Script-Code sieht so aus:

Function CreateView(viewBaseName As String, viewFilteredName, startDate As String, endDate As String) As NotesView
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim viewBase As NotesView
   Dim strSelectionCompare As String
   Dim strSelectionFormula As String
   
   Set db = session.CurrentDatabase
   Set viewBase = db.Getview(viewBaseName)
   
   strSelectionCompare = startDate & " <= @GetField(rohDtStatus) <= " & endDate
   strSelectionFormula = {SELECT Form = "frmRohware" & } & strSelectionCompare
   
   Set CreateView = db.CreateView(viewBaseName, strSelectionFormula, viewBase)
   
End Function

Glombi:
So sollte es gehen:

Function CreateView(viewBaseName As String, viewFilteredName, startDate As String, endDate As String) As NotesView
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim viewBase As NotesView
  Dim strSelectionFormula As String
   
   Set db = session.CurrentDatabase
   Set viewBase = db.Getview(viewBaseName)

strSelectionFormula = |SELECT Form = "frmRohware" & @TextToTime("| + startDate + |") <= rohDtStatus & @TextToTime("| + endDate + |") >= rohDtStatus|   
 
   Set CreateView = db.CreateView(viewBaseName, strSelectionFormula, viewBase)
   
End Function


sofern rohDtStatus ein Datumsfeld ist.

Andreas

buzi:
Hallo Andreas,

vielen Dank für deine schnelle Hilfe. Leider kommen keine Dokumente heraus bei der Abfrage. rohDtStatus ein Datumsfeld (Datum/Zeit).

Wo könnte es sonst klemmen??

Glombi:
Du solltest mal im Debugger nachsehen, ob startDate und endDate wirklich Strings sind und ob dort ein String steht, der in ein Datum konvertiert werden kann.
Da die View auf dem Server erstellt wird, wäre auch interessant zu wissen, ob auf dem Server das Datumsformat passt.

Was soll der Parameter "viewFilteredName" ? Der wird nicht verwendet und wird als Variant übergeben.

Peter Klett:
Das soll bestimmt

Set CreateView = db.CreateView(viewFilteredName, strSelectionFormula, viewBase)

heißen, sonst ist das ganze Konstrukt recht sinnfrei (erstelle eine Ansicht auf Basis einer anderen in der gleichen DB mit gleichem Namen)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln