Es soll in einer Tabelle ein Suchkriterium festgelegt und gespeichert werden, so das diese Suche oben in der Suchen-Dropdownliste der Tabelle jederzeit auswählbar ist. Das Ergebnis soll abhängig vom aktuellen Datum sein.
Gegeben ist eine Spalte „Ereigniszeitpunkt“. Die Felddefinition ist „Zeitpunkt“ (!). Hier scheint mir das Problem zu sein.
Die Abfrage soll wie folgt lauten:
Zeige alle Datensätze, bei denen das Datum in „Ereigniszeitpunkt“ größer curdate()-366 ist. Bei reinen Datumsfeldern funktioniert das, es funktioniert auch, wenn das Datum von Hand fest, also z. B. 1.4.2007 eingegeben wird. Es funktioniert nur nicht, wenn es so wie in anhängendem screenshot gemacht wird und die Funktion curdate() benutzt wird.
Ich vermute, dass der Datentyp “Zeitpunkt” etwas anderes ist als “Datum”, so dass beide nicht miteinander vergleichbar sind.
In der Hilfe steht bei der Übersicht der Rechenfunktionen, dass curdate() einen Datums-Typ liefert. Dieser muss für den Vegleich zuerst in einen Zeitpunktstyp gewandelt werden. Auf Anhieb kann ich aber nicht sagen, welche Funktion dafür zuständig ist.
Das ist klar, ich habe auch schon mit allen möglichen und unmöglichen Umwandlungsfunktionen getestet. Man müsste halt die Feldvariable aus der Datenbank vor dem Vergleich umwandeln können, dann würde es sicher gehen. Da sehe ich aber leider keine Möglichkeit.
Danke für alle Hinweise bis jetzt. Ja, das funktioniert, allerdings nur für Daten, die auch direkt in der Tablle drin stehen. Bei Verknüfpungen scheint es nicht zu funktionieren, leider.
Wer möchte, kann es ja mal nachvollziehen, ich habe eine kleine Testdatenbank angehängt. In beiden Tabellen befindet sich bereits eine Suchabfrage. Bei der einen funktioniert es, bei der verknüpften nicht.
Das ganze sieht nach einem schön reproduzierbaren Bug aus. Wenn man z.B. den Vergleich event_datum > curdate()-7 in einen Report ausgibt, dann kommt das erwartete Ergebnis: meistens 0 und bei den Ereignissen der letzten 7 Tage 1. Das Problem scheint auch nicht mit den Datentypen zusammenzuhängen.
Eine Umgehungsmöglichkeit für den Fehler besteht darin, ein zusätzliches Rechenfeld in der Datenbank anzulegen. Dieses Feld berechnet nur die Differenz vom event_datum bis heute (in Tagen) und kann für Suchabfragen verwendet werden. z.B.
ich weiß, dass Papyrus zumindest bei dem Aufruf von abgelegten Suchabfragen in bestimmten Fällen Probleme hat. Ulli hat mir das auch als Bug bestätigt und es soll in einem der nächsten Updates behoben werden.
Wenn ich mir in meiner Datenbank die Einträge mit den ‘heutigen’ Geburtstagen ausgeben lassen möchte, dann funktioniert das unter dem Menüpunkt ->erweiterte Suchabfrage ->Formelabfrage: DAYOFMONTH(Geburtsdatum)=DAYOFMONTH(Sysdate) AND MONTH(Geburtsdatum)=MONTH(Sysdate) - Geburtsdatum ist der von mir eingerichtete Feldname - einwandfrei. Lege ich diese Abfrage allerdings im benannten DropdownMenü als Suchabfrage ab und klicke es dann wieder an, sagt mir Papyrus: “nichts gefunden”.
Ich kann das allerdings nicht näher eingrenzen. Eine Abfrage nach einem bestimmen Jahr in einem Datumsfeld Z.b. ‘1967’ findet Papyrus auch als abgelegte Suchabfrage ohne Weiteres.