Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: vandekibi am Juni 04, 2014, 10:30:30

Titel: Abfrageknopf mit dem ersten des Monats
Beitrag von: vandekibi am Juni 04, 2014, 10:30:30
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.
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: MaggieMay am Juni 04, 2014, 10:49:08
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.
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: ebs17 am Juni 04, 2014, 11:28:00
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.
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: MaggieMay am Juni 04, 2014, 11:30:22
Zitat...macht sich nicht so gut
funktioniert aber!  ;D

(überraschenderweise)
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: ebs17 am Juni 04, 2014, 11:47:21
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 ...
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: MaggieMay am Juni 04, 2014, 11:50:09
Vielen Dank für die Erläuterungen!
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: vandekibi am Juni 04, 2014, 12:05:47
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.
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: MaggieMay am Juni 04, 2014, 12:10:25
Dann zeig doch bitte mal den kompletten SQL-Code deiner Abfrage.
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: vandekibi am Juni 04, 2014, 12:46:51
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!
Titel: Re: Abfrageknopf mit dem ersten des Monats
Beitrag von: ebs17 am Juni 04, 2014, 13:54:08
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).