Oktober 29, 2020, 21:17:57

Neuigkeiten:

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


Monatliche Abfrage

Begonnen von PeterM, September 23, 2020, 22:01:03

⏪ vorheriges - nächstes ⏩

PeterM

Hallo zusammen,
bin neu hier.  8)

Ich muss mich in Access arbeiten und habe folgende Aufgabenstellen, die mich überfordert:
Es gibt eine Tabelle, die monatlich mit Daten erweitert wird.
Nun benötigte ich zwei Abfragen. Eine Abfrage mit dem Vorvormonat und eine mit dem Vormonat.
Wie kann ich in einer Abfrage eine dynamische Abfrage erstellen?
Beispiel:
Im Monat September müsste der Zeitraum vom 01.08.2020 bis 31.08.2020 ausgewählt sein.
Gibt es irgendwie einen Platzhalter mit dem ich das lösen kann?

ShenTo19

Hallo,
den ersten und letzten Tag des Vormonats geben Dir diese Funktionen aus einem beliebigen Datum dieses Monats zurück:
Public Function FirstOfPreviousMonth(AnyDate As Date) As Date
' Gib den ersten Tag des vorigen Monats zurück.
    FirstOfPreviousMonth = DateSerial(year(AnyDate), Month(AnyDate) - 1, 1)
End Function
Public Function EndOfPreviousMonth(AnyDate As Date) As Date
' Gib den letzten Tag des Monats zurück.
    EndOfPreviousMonth = DateSerial(year(AnyDate), Month(AnyDate), 0)
End Function
Gruß
Thomas

PeterM

Herzlichen Dank! Ich habe jetzt eine Weile gebraucht bis ich das zum Laufen gebracht habe.
Wie ist das mit VBA in Access:
Es scheint in einer Funktion kein Return zu geben. Ist die Variable = Funktionsname automatisch der Rückgabewert? Habe ich das richtig herausgefunden?

ShenTo19

Hallo,
doch, gerade die Funktionen geben einen Wert zurück, das ist ihre Aufgabe. Überprüfe das doch im Direktbereich des VBA-Editors durch:
?EndOfPreviousMonth(Date())Ergebnis: 31.08.2020
?FirstOfPreviousMonth(Date())Ergebnis: 01.08.2020
wobei die Funktion(!) Date() ja das heutige Datum zurückgibt.
Diese Funktionen kannst Du sowohl in VBA als auch in Abfragen/Steuerelementen nutzen.
Wenn Du beispielsweise als Kriterium den Vormonat verwenden willst wie in Deinem Eingangspost beschrieben kannst Du das in VBA so formulieren:
Between FirstOfPreviousMonth(Date()) And EndOfPreviousMonth(Date())In Abfragen musst Du deutsche Bezeichnungen nehmen, also
Zwischen FirstOfPreviousMonth(Date()) Und EndOfPreviousMonth(Date())Gruß Thomas

PhilS

Zitat von: ShenTo19 am September 25, 2020, 08:21:40In Abfragen musst Du deutsche Bezeichnungen nehmen, also
Das wäre mit neu. Englisch sollte immer funktionieren.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ShenTo19

Hallo Phillip,
Du hast natürlich Recht, man kann die englische Bezeichnung anwenden. In Abfragen werden englische Funktionsnamen bei mir aber automatisch in die deutsche Schreibweise übersetzt (deutsches Windows), ebenso beim eingeben in Textfelder-Datenherkunft. Ich hatte gerade das Problem bei einer Kollegin mit der englischen Spracheinstellung, dass eine Funktion in einer Abfrage dann zu einem Fehler führte. Änderung in den englischen Funktionsnamen löste das Problem.
Gruß Thomas

PhilS

Zitat von: ShenTo19 am September 25, 2020, 10:09:41In Abfragen werden englische Funktionsnamen bei mir aber automatisch in die deutsche Schreibweise übersetzt (deutsches Windows), ebenso beim eingeben in Textfelder-Datenherkunft. Ich hatte gerade das Problem bei einer Kollegin mit der englischen Spracheinstellung, dass eine Funktion in einer Abfrage dann zu einem Fehler führte. Änderung in den englischen Funktionsnamen löste das Problem.
Kleiner Hinweis dazu: Wenn man in einem deutschsprachigen Access Funktionsnamen auf Englisch eingibt und Access diese automatisch auf Deutsch übersetzt, dann kann ein englisches Access diese auch wieder "zurückübersetzen". Wenn man selbst Deutsch eingibt, funktioniert das meistens auch in einem englisches Access, aber nicht immer.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

ebs17

ZitatIn Abfragen werden englische Funktionsnamen bei mir aber automatisch in die deutsche Schreibweise übersetzt
Man müsste bei so einer Bemerkung präzisieren, was man unter Abfragen versteht.

SQL (=> SQL-Ansicht einer Abfrage) und VBA (=> VBA-Editor) sprechen generell englisch.

Diese sprachlichen "Umdeutungen" hat man, wenn man über Assistenten (Abfrageeditor, Entwurfsansichten zu Formular und Bericht, Ausdrucksgenerator) arbeitet.

Es ist also auch eine Frage der eigenen überwiegenden Arbeitsweise, wie man sich mit dieser Mehrsprachigkeit beschäftigen muss.
Mit freundlichem Glück Auf!

Eberhard

ShenTo19

Hallo Eberhard,
die Sprachunterschiede zwischen Abfrageeditor und VBA/SQL sind mir schon bewusst. Da ich den Eindruck hatte, der TS sei noch eher unerfahren und ich mich zu gut an meine ersten Schritte mit Access erinnere, bei denen ich eifrig von Abfragegenerator und anderen Assistenten Gebrauch gemacht habe, hielt ich den Hinweis auf deren sprachliche Besonderheiten für angebracht.
Gruß Thomas