Autor Thema: Ansicht erstellen in Abhängigkeit eines Datumswerts  (Gelesen 4257 mal)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
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

  • Gast
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #1 am: 28.06.13 - 12:13:26 »
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

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #2 am: 28.06.13 - 12:28:40 »
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

  • Gast
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #3 am: 28.06.13 - 13:49:13 »
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.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #4 am: 28.06.13 - 14:07:43 »
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)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #5 am: 28.06.13 - 14:43:33 »
Hallo zusammen,

Peter hat natürlich Recht, der Aufruf heißt

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

Ergebnis im Debugger -> startDate = "17.06.2013", endDate="27.06.2013"
Wie kann ich das Datumsformat am Server nachsehen?

Mel

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #6 am: 28.06.13 - 14:56:20 »
Wo man das nachsehen kann, weiß ich leider nicht, aber Du könntest Dir temporär eine Spalte in eine Ansicht der DB einbauen, die @Text (rohDtStatus) ausgibt. Die Datenbank muss natürlich auf dem Server liegen. Wenn das Datum dann in einem falschen Format dargestellt wird, kann es nicht funktionieren.

Mal in eine ganz andere Richtung gedacht: Wozu machst Du das? Erstellst und löschst Du die Ansicht, um eine Ansicht z.B. der Daten der letzte Woche zu haben?

Ich mache sowas mit Ordnern, die ich per Script z.B. beim Öffnen des Ordners versorge. Die Dokumente suche ich mir z.B. mit einem NotesDatabase.Search, in dem ich auch eine Selektionsformel eingeben kann. Dann brauche ich nur noch die Dokumente aus dem Ordner zu entfernen, die nicht hineingehören, die hinzuzufügen, die noch nicht enthalten sind und die anderen in Ruhe zu lassen. Ist ein bisschen langsamer, als eine vom Server gerechnet Ansicht, funktioniert ansonsten aber sehr gut.

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #7 am: 01.07.13 - 11:21:05 »
Also am Datumsformat liegt es wohl nicht.

Meine Anforderung ist folgende: Der User gibt ein Start- und Enddatum an, und die Ansicht soll dann nur die Dokumente enthalten, deren Status-Feld innerhalt dieses Zeitraums geändert wurde. Ich vergleiche also das Status-Datum mit Start- und Enddatum, um dann nur die Dokumente in der Ansicht anzuzeigen, die in den Zeitraum fallen. Enthält bei deiner Variante die Selektionsformel beim NotesDatabase.Search die gleiche Abfrage wie ich das derzeit mit der Selektionsformel der Ansicht mache?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #8 am: 01.07.13 - 12:12:05 »
...Enthält bei deiner Variante die Selektionsformel beim NotesDatabase.Search die gleiche Abfrage wie ich das derzeit mit der Selektionsformel der Ansicht mache?
Ja

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #9 am: 01.07.13 - 14:21:52 »
Dann hab ich ja das selbe Problem wie jetzt auch.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #10 am: 01.07.13 - 14:57:50 »
Ja und nein. Du sparst Dir das Erstellen von Ansichten mit Designer-/Managerrecht, da Du mit einem festen Ordner hinkommst (evtl. einen pro Benutzer, z.B. Gemeinsam, privat bei Erstbenutzung). Das ganze lässt sich dann auch noch debuggen.

Wenn es wirklich nur an der Selektionsformel scheitert, würde ich testweise eine Ansicht erstellen und dort hartcodiert eine Selektionsformel erstellen. Wenn die funktioniert, kannst Du die in die berechnete Selektionsformel umwandeln.

Wie sieht denn die Selektionsformel in der Ansicht aus, nachdem der Agent die Ansicht erstellt hat? Ist dort irgendetwas "Krummes" zu erkennen? Hilft ein F9 oder SHIFT-F9 in der Ansicht?

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #11 am: 03.07.13 - 09:10:23 »

Hm, der Vorteil von meiner Ansicht-Lösung ist halt, dass ich darin Summen berechne die ich hinterher beim Export der Daten nach Calc verwende. Was ich nicht wusste: Braucht der User der die Funktion dann nutzt tatsächlich Designer-/Managerrechte? Dann muss ich es eh anders lösen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #12 am: 03.07.13 - 09:24:28 »
Du kannst auch in Ordnern Summen berechnen. Ordner und Ansichten sind prinzipiell identisch, nur dass bei einer Ansicht die anzuzeigenden Dokumente mittels einer Selektionsformel ermittelt werden, und beim Ordner diese in den Ordner verschoben und daraus auch wieder gelöscht werden können/müssen.

Wenn Du eine gemeinsame Ansicht erstellen lassen willst, benötigt der User mindestens Designerrechte, die willst Du keinem gewöhnlichen User geben. Über einen vom User getriggerten Agenten, der im Namen eines Users mit höheren Rechten läuft, kannst Du das aber trotzdem lösen.

Für persönliche Ansichten sind diese hohen Rechte nicht notwendig.

Was soll denn mit der Ansicht danach passieren? Bleibt die da liegen oder wird die auch wieder gelöscht?

Wenn es nur um den Export in eine Tabellenkalkulation geht, würde ich nicht den Umweg über eine Ansicht gehen, sondern mittels OLE direkt in die Tabelle schreiben (mit Excel ist das sehr einfach, mit Calc habe ich keine Erfahrung). Und um Summen zu ermitteln, benötigt man nicht zwingend eine Ansicht, die können auch im Script errechnet werden.

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #13 am: 03.07.13 - 09:39:53 »

Peter, danke für deine Geduld. Also ich erklär dir worum es geht. Der User macht eine Auswertung über Dokumente, d.h. er möchte nur die Dokumente bekommen, die während eines von ihm angegebenen Zeitraums in einen bestimmten Status versetzt wurden. Werte aus diesen Dokumenten werden dann in Calc exportiert und Summen über Kategorien gebildet.

Der einfachste Weg der mir dazu eingefallen ist war folgender Algorithmus:
1. Eine View V in Notes angelegt mit der gewünschten Kategorisierung und den Summenwerten
2. Eine Maske in Notes angelegt mit zwei Datumsfeldern und einem Button der einen Agent startet
3. Der Agent nimmt die View V als Vorlage, erstellt eine neue View mit dem gewünschten Datum in der Selektionsformel, und die Daten können quasi 1:1 exportiert werden ohne dass ich im Script noch rumrechnen muss.

Aber wenn das mit der neuen View anlegen nicht praktikabel ist, werde ich wohl die alte View mit allen Dokumenten verwenden, die Kategorisierung behalten und mir die Summen der gewünschten Dokumente selber zusammenrechnen - sprich eine Summenzeile in Calc einfügen. Ist wohl die einfachste Lösung ohne mein ganzes Script umschreiben zu müssen?!

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #14 am: 03.07.13 - 10:05:10 »
Gibt es evtl. auch eine Lösung mittels einer eingebetteten Ansicht meiner View, wo ich die Auswahlformel auf den gewünschten Auswertungszeitraum beschränke? Dort gibt es doch die Möglichkeit, die Ansicht nach "Ansicht" oder "Formel" reinzusetzen.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #15 am: 03.07.13 - 10:58:15 »
Eine eingebettete Ansicht würde funktionieren, wenn es nur um einen Tag oder fest definierbaren Zeitraum ginge, aber nicht um einen beliebigen Zeitraum.

Was Du meinst mit der Formel, ist die Angabe der Ansicht. Man kann dort eine Formel hinterlegen, die ausrechnet, welche Ansicht eingebettet wird, das hat aber keinen Einfluss auf die Selektionsformel (oder ich kenne das nicht).

Du kannst Einfluss auf die in der eingebetteten Ansicht anzuzeigenden Dokumente nehmen, indem Du die Dokumente in der Ansicht kategorisierst. Für die Ansicht kannst Du dann eine Formel zur Berechnung der Kategorie angeben, deren Dokumente angezeigt werden. Diese Berechnung berücksichtigt Felder des Dokuments, in das die Ansicht eingebettet ist.

Bei fest definierten Zeiträumen ginge das. Wenn z.B. die Daten immer wochenweise angezeigt werden sollen, könntest Du die Dokumente nach der KW kategoriesieren, oder nach Anfangs- und/oder Endedatum des Zeitraumes. Die Länge des Zeitraumes wäre dann programatisch festgelegt (vorstellbar auch mit mehreren Ansichten, jeweils eine nach Woche, Monat oder Jahr).

Ob ein Export in eine Tabellenkalkulation aus einer eingebetteten Ansicht möglich ist, weiß ich nicht, wage ich aber fast zu bezweifeln. Wäre einen Versuch wert.

Mit dem von mir beschriebenen Verfahren über einen (oder mehrere) feste Ordner ließe sich das m.E. auch realisieren, da Du die gleichen Kategorisierungen und Summen in Ordnern abbilden kannst.

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Ansicht erstellen in Abhängigkeit eines Datumswerts
« Antwort #16 am: 05.07.13 - 10:41:09 »
Also ich habe es jetzt so gelöst, dass ich die Dokumente beim Export nach Calc nach dem gewünschten Datum auswähle und mir die Summen danach in Calc neu berechne (wegen den rausgefallenen Dokumenten). Ist nicht so wie ich mir das "schön" vorstelle aber es funktioniert. Danke Peter für deine Anregungen!!!!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz