PDA

Vollständige Version anzeigen : Frage zur Abfrage (Datumsabfrage)


Katsche
19.01.2008, 13:39
Hallo,

in meiner Reklamationsdatenbank möchte ich einen Bericht erstellen mit all den (offenen) Reklamationen, die seit dem Erstelldatum bzw. letztes Bearbeitungsdatum grösser z.B. 30 Tage nicht mehr bearbeitet worden sind um diese erneut zu bearbeiten.


Ich suche deshalb für meine Abfrage das entsprechende Kriterium wie z.B.
=jetzt() - letztes Bearbeitungsdatum > 30 Tage

Danke!

Gruss aus Rheine

hcscherzer
19.01.2008, 14:12
Moin Katsche,
versuchs mal so (Feld- und Tabellennamen ggf. anpassen):select * from reklamationen
where offen and (datediff("d", bearbdat, date) > 30 or datediff("d", erstelldat, date) > 30);

Bitte eingeben im SQL Entwurfsbereich der Abfrage, die als Datenquelle für den Bericht dienen soll.

Wenn Du das im QBE-Entwurfsbereich erstellst, musst Du die drei Kriteriumsfelder in Ausgabespalten ziehen, und für jedes das Kriterium angeben: für [offen] True und für die anderen beiden Felder die DateDiff() Funktion aber statt "d" -> "t" nehmen und statt der "," -> ";" sowie statt 'date' -> 'Datum()'

Katsche
19.01.2008, 20:34
Hallo Hans-Christian,

per SQL wollte ich eigentlich nicht, lieber wäre es mir als Kriterium und dazu habe ich noch eine Frage!

1. Eine Abfrage hatte ich schon angelegt und habe auch schon alle Reklamationen herausgefiltert die noch offen sind da diese per Kontrollkästchen geöffnet oder geschlossen werden können (in der Anlage ein Screenshot).

2. ich habe folgendes in mein Kriterium bei StartDate eingegeben:
datediff("t"; [letztes bearbeitungsdatum]; datum) > 30 or datediff("t"; startdate; datum) > 30) daraufhin erhalte ich die Meldung, dass ich zu viele schliessende Klammern habe oder Typenunverträglich. Wo muss ich da noch nachbessern? Ich habe versucht deinen Anweisungen genau zu folgen!!!

Wie gesagt, alle offenen Reklamationen habe ich schon gefiltert, was mir fehlt ist nur noch eine Übersicht über die offenen, die seit dem Startdatum grösser z.B. 30 Tage sind (dynamisch ab "jetzt")

Gruss in den Norden

Lanz Rudolf
19.01.2008, 20:50
Hallo
wie ist letztes bearbeitungsdatum und startdate in der Tabelle Definiert ?
hier ist eine zu viel oder ?
datediff("t"; [letztes bearbeitungsdatum]; datum) > 30 or datediff("t"; startdate; datum) > 30)

Möglicher weise so
((datediff("t"; [letztes bearbeitungsdatum]; datum) > 30) or (datediff("t"; startdate; datum) > 30))

Josef P.
19.01.2008, 21:08
Ich schreibe wieder einmal meinen "Standardkommentar" zu Bedingungen wie datediff("t"; [letztes bearbeitungsdatum]; datum) > 30
wenn man diese etwas umformuliert, ist die daraus generierte SQL-Anweisung für Jet optimierungsfähig. (z.B. falls ein Index für [letztes bearbeitungsdatum] in der Tabelle vorhanden ist)
[letztes bearbeitungsdatum] < DateAdd("d", -30, Date())
(auch bei der Verwendung als Kriterium für OpenReport o.ä. sollte man darauf achten)

ebs17
19.01.2008, 22:06
... per SQL wollte ich eigentlich nicht ...

Nur am Rande: Eine Abfrage ist eine (gespeicherte) SQL-Anweisung. Vergleiche mit der SQL-Ansicht.

Katsche
20.01.2008, 19:45
Nabend,

vielen Dank an alle fleissigen Helfer!

Ich habe es jetzt hinbekommen!

Im Abfragefeld habe ich folgendes geschrieben: Ausdr1: ((DatDiff("t";[letztes bearbeitungsdatum];Jetzt())>30) Oder (DatDiff("t";[startdate];Jetzt())>30)) sowie auf Kriterium "-1" gefiltert und dann erhalte ich das gewünschte Ergebnis.

Einen schönen Wochenstart an alle und bis zum nächsten mal.

Gruss aus Rheine,

Katsche