Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrageknopf mit dem ersten des Monats

Begonnen von vandekibi, Juni 04, 2014, 10:30:30

⏪ vorheriges - nächstes ⏩

vandekibi

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

MaggieMay

Zitat...macht sich nicht so gut
funktioniert aber!  ;D

(überraschenderweise)
Freundliche Grüße
MaggieMay

ebs17

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 ...
Mit freundlichem Glück Auf!

Eberhard

MaggieMay

Freundliche Grüße
MaggieMay

vandekibi

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.

MaggieMay

Dann zeig doch bitte mal den kompletten SQL-Code deiner Abfrage.
Freundliche Grüße
MaggieMay

vandekibi

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!

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard