Datumsbereich filtern und Mailsend ausführen

  • Hallo,


    vielen Dank für eure bisherige Hilfe.
    Leider klappt es immer noch nicht :(


    Bekomme beim Klick auf den Button eine Meldung "Variant enthält keinen Container"
    Was bedeutet denn das??


    1)
    Das berechnete Feld mit dem Query übernimmt mein Start- und Endedatum nicht.
    Das Feld ist als "Formel" mit Typ "berechnet". Ist das so richtig? Als Wert hatte ich dann
    die Formel des Query eingetragen...
    "(@TextToTime(" + @Text(startDate) + ") <= [adatum] OR Not @TextToTime(" + @Text(startDate) + ") < 1/1/1900) AND
    @TextToTime(" + @Text(endDate) + ") >= [adatum] OR Not @TextToTime(" + @Text(endDate) + ") < 1/1/1900)"



    2)
    Bei meinem Button in der Maske habe ich folgenden Code bei "Click" hinterlegt:


    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkSpace
    Dim db As NotesDatabase
    Dim uidoc As NotesUIdocument
    Dim doc As NotesDocument
    Dim view As NotesView

    Set uidoc = ws.CurrentDocument
    Set doc = uidoc.document
    Set db = doc.ParentDatabase

    ' hier Ansicht als Objekt holen
    Set view = db.GetView("E-Datum")

    ' Suche ausführen
    j = view.FTSearch(doc.Query(0), 0)

    ' ale Dokumente durchgehen
    Set doc = view.GetFirstDocument()
    While Not(doc Is Nothing)
    Call doc.Send( True, "max.mustermann@xyz.de" )
    Set doc = view.GetNextDocument(doc)
    Wend
    Call view.Clear
    End Sub



    Gruß

    • Offizieller Beitrag

    Schalt mal den Debugger ein (Menü: Datei - Extras) und teile uns die Zeile mit, in der der Fehler auftritt.


    Ansonsten mache das Feld Query mal sichtbar und schau, ob die Formel einen syntaktisch einwandfreien Query-String erzeugt.


    Gruß
    Dirk

  • Der Fehler tritt bei "j = view.FTSearch(doc.Query(0), 0)" auf.


    Das Query lautet dabei:


    Select "(@TextToTime(" + @Text(startDate) + ") <= [adatum] OR Not @TextToTime(" + @Text(startDate) + ") < 1/1/1900) AND
    @TextToTime(" + @Text(endDate) + ") >= [adatum] OR Not @TextToTime(" + @Text(endDate) + ") < 1/1/1900)"


    start- und endDate wurde ausgewählt..

    • Offizieller Beitrag

    im Query stet etwas falsches, da fehlen noch Hochkommas und die gesammte Formel darf nicht in Hochkommas eingefasst werden
    (
    (@TextToTime(\"" + @Text(startDate) + "\") <= [adatum] OR
    Not @TextToTime(\"" + @Text(startDate) + "\") < 1/1/1900)
    )
    AND
    (
    @TextToTime(\"" + @Text(endDate) + "\") >= [adatum] OR
    Not @TextToTime(\"" + @Text(endDate) + "\") < 1/1/1900)
    )


    angenommen:
    startDatum = 08.06.2007
    enddatum = 10.06.2007
    dann muss in dem Feld Query so etwas stehen:
    (@TextToTime("08.06.2007") <= [adatum] OR Not @TextToTime("08.06.2007") < 1/1/1900) AND
    @TextToTime("10.06.2007") >= [adatum] OR Not @TextToTime("10.06.2007") < 1/1/1900)"


    Gruß
    Dirk

  • Diese Formel akzeptiert mein Designer nicht.
    Er stört sich schon an den ersten beiden Hochkommas

    Code
    ((@TextToTime(\""...


    Ein Operator oder Semikolon wurde erwartet, aber nicht gefunden:"""

    • Offizieller Beitrag

    Soory der komplette Ausdruck muss schon in Hochkommas, es muss die Formel ja als String drin stehen.


    vor den doppelten Hochkommas muss noch ein \, damit das Hochkomma innerhalb der Formel nicht als STring-Ende-Kennung beachtet wird.


    Gruß
    Dirk


    "(
    (@TextToTime(\"" + @Text(startDate) + "\") <= [adatum] OR
    Not @TextToTime(\"" + @Text(startDate) + "\") < 1/1/1900)
    )
    AND
    (
    @TextToTime(\"" + @Text(endDate) + "\") >= [adatum] OR
    Not @TextToTime(\"" + @Text(endDate) + "\") < 1/1/1900)
    )"

  • Ok jetzt wird die Formel übernommen. Es kommt jedoch immer noch die Meldung mit dem Container. Was mir auffällt ist, dass das Query weiterhin die Variablennamen enthält anstatt das jeweilige Start/Ende Datum. Muss ich hier noch einen Refresh oder so etwas reinbringen?

    • Offizieller Beitrag

    poste mal den berechneten Inhalt im Feld Query, Trage dazu in den Feldern startDate und endDate Datumswerte ein.


    Gruß
    Dirk

  • SELECT "(
    (@TextToTime(\"" + @Text(startDate) + "\") <= [adatum] OR Not @TextToTime(\"" + @Text(startDate) + "\") < 1/1/1900)
    )
    AND
    (
    @TextToTime(\"" + @Text(endDate) + "\") >= [adatum] OR Not @TextToTime(\"" + @Text(endDate) + "\") < 1/1/1900)
    )"


    In startDate war 01.06.2007
    und in endDate 08.06.2007 eingetragen.


    Das Query ändert sich beim Auswählen von Daten in den beiden Feldern nicht

    • Offizieller Beitrag

    bin jetzt etwas verwirrt.


    Was passiert, wenn Du die Datumsfelder einträgst und dann F9 benutzt?


    Du kopierst aber schon aus dem Dokument und nicht aus der Gestaltung (Designer-Client)?


    Woher kommt das Select?


    Gruß
    Dirk

  • wenn ich F9 drücke werden die Datumswerte ins Query übernommen :)


    Das Select wurde automatisch vom Designer eingefügt, aber was bedeutet denn aus einer Gestaltung kopieren???


    // Wenn ich F9 drücke werden zwar die Werte eingetragen, jedoch bleibt die Fehlermdlung beim Klick auf den Button die selbe

    • Offizieller Beitrag
    Zitat

    wenn ich F9 drücke werden die Datumswerte ins Query übernommen :)

    funktioniert dann die Suche?


    Zitat

    Das Select wurde automatisch vom Designer eingefügt,...

    echt?, der getraut sich was Deine Formeln zu verändern!
    Wir reden aber schon von einem Feld in der Maske?, mir sieht es so aus, dass Du es in einer Ansichtsauswahlformel eingetragen hast.


    Zitat

    ..., aber was bedeutet denn aus einer Gestaltung kopieren???

    ich wollte nicht die Formel sehen (Gestaltung im Designer-Client) sondern, was die Formel ind em feld berechnet (Ergebnis).


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Nein die Suche funktioniert dann trotzdem nicht. Der Debugger beendet immer noch an der selben stelle.


    Wenn man F9 drückt verschwindet auch das Select ;) Es ist ein ganz normales berechnetes Feld in einer Maske vom Typ "Formel"


    Hier ist der berechnete Wert im Feld "Query":


    (
    (@TextToTime("10.04.2007") <= [adatum] OR Not @TextToTime("10.04.2007") < (1/1/1900)
    )
    AND
    (
    @TextToTime("07.06.2007") >= [adatum] OR Not @TextToTime("07.06.2007") < (1/1/1900)
    )