Select-Abfrage mit "Oder"-Kriterien

  • Hallo!


    Ich habe in einer operativen Datenbank ein Formular geändert. Es wurde ein Feld hinzugefügt, daß künftig einen Wert enthält (bei neuen Dokumenten).


    Hunderte von alten, bereits existenten Dokumenten haben nun durch den Schablonenwechel ebenfalls dieses Feld, allerdings steht kein Wert darin.


    Nun wird künftig eine neue Ansichte benötigt, in der Dokumente ERST DANN AUFTAUCHEN, wenn ein Dok. in diesem neuen Feld einen Wert enthält!
    ABER:
    Es sollen in exakt dieser Ansicht auch die Dokumente stehen, die nun (weil es sich um alte Doks handelt) diesen Wert in dem Feld nicht mehr erhalten werden!
    Eine Selektion wäre da z.B. über das Erstellungsdatum der Dokumente möglich.


    Daher sitze ich nun an einer "select"-Formel für die Ansicht, die mir die NEUEN und künftigen Doks liefert:


    select (form = "name" & @ faktura > "0" & appStartDate <= @Yesterday)


    Das neue Feld in den Formularen ist "faktura".


    Nun muss diese Select-Formel eine Erweiterung erhalten, die entweder Doks selektiert, die vor heute erzeugt wurden UND Doks die obige Kriterien erfüllen.


    Wie mache ich das der Formel klar?!?
    :)


    Gruß
    Mike

    • Offizieller Beitrag

    zum Thema @Yesterday (Designer-Hilfe)

    Zitat

    Durch die Verwendung von @Yesterday in Spalten- oder Auswahlformeln kann die Verarbeitungsgeschwindigkeit Ihrer Anwendung verringert werden. Außerdem verursacht diese Funktion, dass permanent das Symbol für die Ansichtsaktualisierung erscheint.


    Verwende @TextToTime("Heute") und einen @Adjust(...) um den gestrigen Tag zu berechnen.


    Zitat

    ihr seid heut' echt gut drauf und es kommen intelligente antworten...

    ernst gemeint oder ironisch?


    Was macht dieses @ in der Formel?
    select (form = "name" & @ faktura > "0" & appStartDate <= @Yesterday)


    Ist faktura eine Zahl oder String?
    bei Zahl (funktioniert auch bei String) ... @Text(factura) != ""
    bei String ... factura != ""
    Bin mir nicht sicher, ab ich alles richtig interpretiert habe, aber die Formal müsste dann in etwa so aussehen:

    Code
    gestern = @Adjust(@TextToTime("Heute"); 0;0;-1;0;0;0)
    
    
    SELECT form = "name" & (@Text(faktura) != "" | appStartDate <= gestern)


    Suche mal im Forum nach @TextToTime("Heute"), dann wirst Du noch eine Anleitung finden, wie Du dies für andere Sprachen (franz., engl.) umsetzen kannst.


    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

  • Hallo Dirk!


    Ja, meine Aussage war "ironisch" gemeint, soviel dazu.
    :)


    Das "@" in meiner Formel war ein Fehler, der mir beim schreiben des threads passiert ist. Ich arbeite und entwickle zusätzlich an einem Offline-Laptop, meine posts schreibe ich dann hier an meinem Desktop-PC.


    Seit 2 Jahren läuft die DB auch gut mit @today und @yesterday.
    Jedoch hat mich schon immer dieses Symbol für die Ansichtsaktualisierung genervt! JETZT weiß ich auch wo das herkommt...


    Ich bekomme es aber nicht hin:


    Wenn ich versuche ein Datum in der Formel einzusetzen (z.B. "01.07.2007"), dann wertet er das nicht mehr aus.


    MUSS ich dann vorher die Sache in Text wandeln? Oder kann ich das über die Feld- bzw. Formulareigenschaften steuern?
    Das Feld "faktura" ist ein Options-Textfeld.
    In dem Feld appStartDate steht ein Datum (sollte auch dieses Format haben) - ich könnte auch das create-Datum der Dokumente auswerten.


    Wie bekomme ich es mit der Select-Funktion also hin, daß er mir die Dokumente in der Ansicht zeigt, die VOR dem 01.07.2007 erstellt wurden und die im Feld "Faktura" keinen Wert besitzen?!?


    Gruß
    Mike

    • Offizieller Beitrag

    Also @Created oder appStartDate geben Dir einen Wert vom Typ Datum/Zeit, also muss der 1.7.07 auch in Datim/Zeit umgewandelt werden. Dies funzt mit @TextToTime.
    Also Deine Anforderung "die VOR dem 01.07.2007 erstellt wurden und die im Feld "Faktura" keinen Wert besitzen" lässt sich dann wie folgt umsetzen:
    "die VOR dem 01.07.2007 erstellt wurden" ... @Created < @TextToTime("01.07.2007")
    "die im Feld "Faktura" keinen Wert besitzen" ... Faktura = ""
    Dies mit dem und verknüpfen - ergibt

    SQL
    SELECT @Created < @TextToTime("01.07.2007") & Faktura = ""


    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