Hallo zusammen
Folgendes Problem:
Für die Monatsrapporte habe ich in der Abfrage folgender Befehl: Zwischen #01.05.2014# Und #01.06.2014#
an sich möchte ich aber nicht jedes mal die Daten eingeben sondern, dass er automatisch den letzten Monat nimmt.
Jahr([DA])* 12 + DatTeil("m", [DA]) = Jahr(Datum())* 12 + DatTeil("m", Datum()) - 1
DA steht für "Dienstantritt" und ist der Name der Sparte. Das Datumsformat in dieser Sparte ist z. B. 1.5.2014 22:00
mit dieser "automatischen" Formel aber ich aber einen syntacktischen Fehler.
Wo habe ich den Überlegungsfehler gemacht? Besten Dank.
Hi,
wieso multiplizierst du das Jahr mit 12?
Versuche es mal hiermit:Format(DA, "yyyymm") = Format(Date(), "yyyymm")-1Damit solltest du alle Dienstantritte aus dem Vormonat bekommen.
SELECT * FROM Tabelle
WHERE DA >= DateSerial(Year(Date(), Month(Date()) - 1, 1)
AND DA < DateSerial(Year(Date(), Month(Date()), 0)
@MaggieMay: Die Formatanweisung erzeugt einen String (Text). Texte und Addieren macht sich nicht so gut.
Zitat...macht sich nicht so gut
funktioniert aber! ;D
(
überraschenderweise)
Zitatfunktioniert aber!
Aber:
1) Solche internen Typumwandlungen, die z.B. Access teilweise vornimmt, sind ein Entgegenkommen an Anfänger und schlechten Programmierstil. Man sollte sich aber besser nicht darauf verlassen, dass das immer funktioniert. Eine neuere Version oder schon ein Patch können unangemeldet eine vorhandene Fehlertoleranz einschränken, und dann ist das Geschrei groß, wenn eine "immer funktionierende" Anwendung dies auf einmal nicht mehr tut. Eine Fehlersuche ist dann entsprechend spannend.
2) Es geht sichtbar um eine Filterung in Abfragen. Die Anwendung einer Funktion auf das Tabellenfeld verhindert zuverlässig die Nutzung eines möglicherweise vorhandenen Index. Damit wird Performance verhindert, die möglicherweise benötigt wird.
Wenn Du bei Deinem Auto Gang 3 und höhere blockierst, funktioniert das Auto auch - aber nicht mehr so gut ...
Vielen Dank für die Erläuterungen!
Hallo zusammen
vielen Dank für die Antworten.
um beim Auto zu bleiben: im Moment funktioniert die Hupe ganz toll.
Der Vorschlag von MaggieMay verursacht die gleiche Meldung wie "meine" Lösung.
Der Vorschlag von ebs17 meldet:
die Unterabfrage in diesem Ausdruck hat eine fehlerhafte Syntax. Prüfen Sie die Syntax der Unterabfrage, und setzen Sie die Unterabfrage in Klammern.
Dann zeig doch bitte mal den kompletten SQL-Code deiner Abfrage.
haben den Fehler gefunden.
; an Stelle von ,
Jahr([DA])*12+DatTeil("m";[DA])=Jahr(Datum())*12+DatTeil("m";Datum())-1
jetzt funktioniert es.
Vielen Dank an die Inputs!
Zitatdie Unterabfrage in diesem Ausdruck hat eine fehlerhafte Syntax
Ich zeigte eine
vollständige SQL-Anweisung, nicht ein Stück, das man irgendwohin kopiert.
Siehe SQL-Ansicht (http://www.ardiman.de/datenbanken/grundlagen/abfragen/#SEC2).